Codeforces Round #270
はい。
http://codeforces.com/contest/472
A. Design Tutorial: Learn from Math
ざっくりと大意
・与えられたnを2つの合成数に分ける。
方針のようなもの
・無理に2つの数が近い大きさにする必要とかないので小さい方から探す。
n=int(raw_input()) m=[4,6,8,9,10,12,15,21,33,27] c=['0','2','4','5','6','8'] if n==13 or n==19: print 4,n-4 elif n==17: print 8,9 else: for i in m: if str(n-i)[-1] in c: print i,n-i break
引用はウィキペディアから http://ja.wikipedia.org/wiki/%E5%90%88%E6%88%90%E6%95%B0
4以上の全ての偶数は合成数である。 10以上の数では一の位が 0,2,4,5,6,8 であれば全て合成数である。
引用ここまで
但し、一の位が3でも33は約数が1,11,33とあるので合成数である。20以下の奇数は一の位だけを見る適当な判定が通用しないので先に例外として処理する。
と思ったけどとてもシンプルな解があった。偶数奇数も見れば活用出来るのかなとか思ってはいたけど。。zbwengさんのコードを。
http://codeforces.com/contest/472/submission/8000972
def main(): n = input() if n % 2 == 0: print('%d %d' % (4, n-4)) else: print('%d %d' % (9, n-9)) main()