diff options
Diffstat (limited to '074.py')
| -rw-r--r-- | 074.py | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -0,0 +1,48 @@ + +fac = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880] +numbers = [0]*10000000 + +numbers[0] = 1 +numbers[1] = 1 +numbers[2] = 1 +numbers[145] = 1 +numbers[40585] = 1 +numbers[169] = 3 +numbers[871] = 2 +numbers[872] = 2 +numbers[45361] = 2 +numbers[45362] = 2 +numbers[1454] = 3 +numbers[363601] = 3 + +def next(n): + x = 0 + while n > 0: + x += fac[n % 10] + n /= 10 + return x + +def count(n): + if numbers[n] != 0: + return + chain = [n] + x = next(n) + while x not in chain: + chain.append(x) + if numbers[x] != 0: + break + x = next(x) + last = numbers[chain[-1]] + l = len(chain) + for j in xrange(0, l-1): + c = chain[j] + numbers[c] = l - j - 1 + last + +c = 0 +for i in xrange(10, 1000000): + count(i) + if numbers[i] == 60: + c += 1 + +print c + |
