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

70 lines
1.3 KiB
Python

#!/usr/bin/python3
from numpy import zeros
from timeit import default_timer
def is_pandigital(value, n):
i = 0
digits = zeros(n + 1, int)
while i < n and value > 0:
digit = value % 10
digits[digit] = digits[digit] + 1
value = value // 10
i = i + 1
if i < n or value > 0:
return 0
if digits[0] != 0:
return 0
for i in range(1, n+1):
if digits[i] != 1:
return 0
i = i + 1
return 1
def main():
start = default_timer()
max_ = 0
for i in range(1, 10000):
n = 0
j = 1
while 1:
tmp = i * j
n = n + tmp
j = j + 1
if n > max_ and is_pandigital(n, 9):
max_ = n
if i * j < 10:
n = n * 10
elif i * j < 100:
n = n * 100
elif i * j < 1000:
n = n * 1000
elif i * j < 10000:
n = n * 10000
elif i * j < 100000:
n = n * 100000
if n > 987654321:
break
end = default_timer()
print('Project Euler, Problem 38')
print('Answer: {}'.format(max_))
print('Elapsed time: {:.9f} seconds'.format(end - start))
if __name__ == '__main__':
main()