#!/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