-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patheu104.py
More file actions
79 lines (62 loc) · 2.96 KB
/
eu104.py
File metadata and controls
79 lines (62 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# ------------------------------------------ Pandigital multiples --------------------------------------------- #
# #
# Take the number 192 and multiply it by each of 1, 2, and 3: #
# #
# 192 × 1 = 192 #
# 192 × 2 = 384 #
# 192 × 3 = 576 #
# #
# By concatenating each product we get the 1 to 9 pandigital, 192384576. #
# We will call 192384576 the concatenated product of 192 and (1,2,3) #
# #
# The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4, and 5, #
# giving the pandigital, 918273645, which is the concatenated product of 9 and (1,2,3,4,5). #
# #
# What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product #
# of an integer with (1,2, ... , n) where n > 1? #
# ------------------------------------------------------------------------------------------------------------- #
import time
import math
def isPandigital(n):
p = str(n)
return (len(p) == 9 and all(d in p for d in [str(i) for i in range(1, 10)]))
def fibonacci():
a = 0
b = 1
while (True):
yield b
b += a
a = b - a
def fibonacciModulo(mod):
a = 0
b = 1
while (True):
yield b
b += a
a = b - a
b = b % mod
def eu104():
fib = fibonacciModulo(1000000000)
fib1 = fibonacci()
flag = True
i = 1
f = next(fib)
f1 = next(fib1)
while (True):
while (not isPandigital(f)):
i += 1
f = next(fib)
f1 = next(fib1)
if (isPandigital(str(f1)[:9])):
flag = False
if (flag == False):
break
i += 1
f = next(fib)
f1 = next(fib1)
return i
if __name__ == "__main__":
startTime = time.clock()
print (eu104())
elapsedTime = time.clock() - startTime
print ("Time spent in (", __name__, ") is: ", elapsedTime, " sec")