与えられた数字については、N
は、xとyがn以下で、xの桁の合計がyの数字のための順序付きペア
N = 6:xがyの桁数の合計よりも常に少ないY及びXの桁の和未満であり、xとyの両方がある[(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (4, 5), (4, 6), (5, 6)]
現在地21
可能順序付けられた対が存在します以下は私の素朴なアプローチですが、これはかなり遅く、N = 10000までうまく動作します。
from itertools import permutations
n=100
lis=list(range(n+1))
y=list(i for i in permutations(lis,2) if i[0]<i[1] and sum(list(map(int,
(list(str(i[0]))))))<sum(list(map(int,(list(str(i[1])))))))
print(len(y))
つ使用して発電機
from itertools import permutations
for _ in range(int(input())):
n=1000
lis=range(n+1)
y=(i for i in permutations(lis,2) if i[0]<i[1] and sum(list(map(int,
(list(str(i[0]))))))<sum(list(map(int,(list(str(i[1])))))))
print (sum(1 for _ in y))
優れた改良版:この問題に取り組むためのより良い方法が
from itertools import permutations
for _ in range(int(input())):
n=1000
lis=range(n+1)
y=(i for i in permutations(lis,2) if i[0]<i[1] and sum(map(int,(str(i[0]))))<sum(map(int,(list(str(i[1]))))))
print (sum(1 for _ in y))
ありますか?
コストO(N)のメモリを使用してアルゴリズムを超える〜20倍の改善、(1,10です)、(2,10)、(2,11)、(3,10)、(3,11)、(3,12)等であり、xの桁の和はyの桁の和よりも小さくない。間違った答えを与える。 –
これもまた、間違った答えを与えます。 –
しかし、あなたのアプローチは私のものと同じですが、これらのソリューションはn = 10000まで動作しますが、大きなnについては10 ** 8と言えば、これはひどく失敗します。あなたの努力に感謝します:) –