diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:21:45 +0200 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:35:09 +0200 |
| commit | 95341b61b030c9e1290f3b326cb7ec584f543aea (patch) | |
| tree | 852386fa04d32eb859bca11c0eff7b5ef9e50f00 /074.py | |
| parent | 571164d977f91925c4c76a292f74f5f93d09ae23 (diff) | |
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 + |
