Considérez le nombre irrationnel décimal suivant obtenu en concaténant des entiers positifs dans l'ordre:
0.123456789101112131415161718192021...
La 12e fraction est 1.
dn représente le nième chiffre de la fraction. Trouvez «d1 x d10 x d100 x d1000 x d10000 x d100000 x d1000000». http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2040
A partir du nombre de chiffres de chaque numéro, quel chiffre correspond au numéro qui peut être obtenu ...
Cependant, cela devenait ennuyeux, et après avoir simplement combiné chaque nombre sous forme de chaîne de caractères, le nombre spécifié de chiffres de la chaîne de caractères générée a été calculé.
def main():
ans = 1
ls = ''.join([str(i) for i in range((10**5)*2)])
for d in [10**j for j in range(7)]:
ans *= int(ls[d])
print ans
main()
J'ai essayé d'utiliser le journal. Je pensais que cela économiserait de la mémoire, mais cela n'a pas fonctionné en raison d'un bogue de journal. Il a fallu environ une heure pour identifier ce bogue.
from math import log
def main2():
digits = [10**i for i in range(7)]
N = 10
ans = 1
s = 0
i = 1
while digits:
s += int(log(i,N))+1
if s >= digits[0]:
ans *= int(str(i)[digits.pop(0)-s-1])
i+=1
print ans
main2()
bogue de journal http://bugs.python.org/issue3724
>>>log(1000,10)
2,9999999999999996
Recommended Posts