diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-05-26 16:12:24 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-05-26 16:12:24 +0800 |
commit | 1c76beb0d4ccf57d2db84cf417f37a3a155fb905 (patch) | |
tree | 310bbc9bc48b2860f42b9994a62c38a1b91829b8 /euler104.py | |
parent | c98d66aca04d0d839833b6b81bf249822c4ca350 (diff) | |
download | project_euler-1c76beb0d4ccf57d2db84cf417f37a3a155fb905.tar.xz |
58, 76, 97, 104
Diffstat (limited to 'euler104.py')
-rw-r--r-- | euler104.py | 35 |
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 |