2011年までの合計が0を超える10個の整数を見つけますが、それらの逆数の合計は1です。
例えば
x1 + x2 + .. + x10 = 2011
1 / x1 + 1 / x2 + .. + 1 / x10 = 1
私はここでこの問題を見つけましたhttp://blog.computationalcomplexity.org/2011/12/is-this-problem-too-hard-for-hs-math.html
計算の複雑さは何で、どのタイプのアルゴリズムがそれを解決できるのか疑問に思いました。
EDIT2:私は十分に速い次のブルートフォースコードを書きました。しかし、解決策が見つからなかったので、仮定を少し調整する必要があります。私は今、私が解決策を見つけると確信しています。
from fractions import Fraction
pairs = [(i,j) for i in range(2,30) for j in range(2,30)]
x1x2 = set((i+j, Fraction(1,i)+Fraction(1,j)) for i,j in pairs)
print('x1x2',len(x1x2))
x1x2x3x4 = set((s1+s2,f1+f2) for s1,f1 in x1x2 for s2,f2 in x1x2 if f1+f2<1)
print('x1x2x3x4',len(x1x2x3x4))
count = 0
for s,f in x1x2x3x4:
count+=1
if count%1000==0:
print('count',count)
s2 = 2011 - s
f2 = 1 - f
for s3,f3 in x1x2:
s4 = s2-s3
if s4>0:
f4 = f2-f3
if f4>0:
if (s4,f4) in x1x2x3x4:
print('s3f3',s3,f3)
print('sf',s,f)