Daniele Fucini cac80478da
Add more solutions
Added solutions for problems 36, 37, 38, 39 and 40 in python and C
2019-09-21 15:45:18 +02:00

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()