61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
#!/usr/bin/python3
|
|
|
|
from numpy import zeros
|
|
|
|
from timeit import default_timer
|
|
|
|
def main():
|
|
start = default_timer()
|
|
|
|
digits = zeros(1000005, int)
|
|
i = 1
|
|
value = 1
|
|
|
|
while i <= 1000000:
|
|
if value < 10:
|
|
digits[i-1] = value
|
|
i = i + 1
|
|
elif value < 100:
|
|
digits[i-1] = value / 10
|
|
digits[i] = value % 10
|
|
i = i + 2
|
|
elif value < 1000:
|
|
digits[i-1] = value / 100
|
|
digits[i] = (value / 10) % 10
|
|
digits[i+1] = value % 10
|
|
i = i + 3
|
|
elif value < 10000:
|
|
digits[i-1] = value / 1000
|
|
digits[i] = (value / 100) % 10
|
|
digits[i+1] = (value / 10) % 10
|
|
digits[i+2] = value % 10
|
|
i = i + 4
|
|
elif value < 100000:
|
|
digits[i-1] = value / 10000
|
|
digits[i] = (value / 1000) % 10
|
|
digits[i+1] = (value / 100) % 10
|
|
digits[i+2] = (value / 10) % 10
|
|
digits[i+3] = value % 10
|
|
i = i + 5
|
|
elif value < 1000000:
|
|
digits[i-1] = value / 100000
|
|
digits[i] = (value / 10000) % 10
|
|
digits[i+1] = (value / 1000) % 10
|
|
digits[i+2] = (value / 100) % 10
|
|
digits[i+3] = (value / 10) % 10
|
|
digits[i+4] = value % 10
|
|
i = i + 6
|
|
value = value + 1
|
|
|
|
n = digits[0] * digits[9] * digits[99] * digits[999] * digits[9999] * digits[99999] * digits[999999]
|
|
|
|
end = default_timer()
|
|
|
|
print('Project Euler, Problem 40')
|
|
print('Answer: {}'.format(n))
|
|
|
|
print('Elapsed time: {:.9f} seconds'.format(end - start))
|
|
|
|
if __name__ == '__main__':
|
|
main()
|