# coding: utf-8 # 動的計画法によって解く # # DP[x][y]をx番目の素数からy番目の素数を使って作れる数とする。 # ただし、DP[x][y]においてはx番目とy番目の素数は必ず使うものとする。 # すなわち、 # DP[0][0] = [ 2 ] # DP[1][2] = [ 3+5, 3-5, 3*5, 3/5 ] # である。 # # DPの満たす条件は以下の通り # DP[0][0] = { 2 }, DP[1][1] = { 3 }, …… # DP[x][y] = U[x<=i EPS: DP[x][y] += [( u/v, "(%s/%s)"%(fu,fv) )] c = 0 for x in range(n): for y in range(x,n): for i in range(x,y+1): for j in range(i+1,y+1): for (u,fu) in DP[x][i]: for (v,fv) in DP[j][y]: if abs(u-v) < EPS: c += 1 print "%s=%s"%(fu,fv) print c