summaryrefslogtreecommitdiff
path: root/euler104.py
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-05-26 16:12:24 +0800
committerIru Cai <mytbk920423@gmail.com>2018-05-26 16:12:24 +0800
commit1c76beb0d4ccf57d2db84cf417f37a3a155fb905 (patch)
tree310bbc9bc48b2860f42b9994a62c38a1b91829b8 /euler104.py
parentc98d66aca04d0d839833b6b81bf249822c4ca350 (diff)
downloadproject_euler-1c76beb0d4ccf57d2db84cf417f37a3a155fb905.tar.xz
58, 76, 97, 104
Diffstat (limited to 'euler104.py')
-rw-r--r--euler104.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/euler104.py b/euler104.py
new file mode 100644
index 0000000..5ec15b4
--- /dev/null
+++ b/euler104.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+from math import log10,sqrt
+
+fn_1 = 1
+fn_2 = 1
+n = 3
+
+def pandigital(n):
+ a = [False] * 10
+ while n > 0:
+ t = n % 10
+ if t == 0:
+ return False
+ if a[t]:
+ return False
+ a[t] = True
+ n = n / 10
+ return True
+
+while True:
+ fn = (fn_1 + fn_2) % 1000000000
+ if fn > 100000000 and pandigital(fn):
+ # a[n] = pow((1+sqrt(5))/2, n)/sqrt(5)
+ # - pow((1-sqrt(5))/2, n)/sqrt(5)
+ log10_fn = n*log10((1+sqrt(5))/2) - log10(sqrt(5))
+ frac = log10_fn - int(log10_fn)
+ first9 = int(pow(10, frac)*100000000)
+ if pandigital(first9):
+ print(n)
+ break
+
+ fn_2 = fn_1
+ fn_1 = fn
+ n = n + 1