blob: adee894fad384a307c70500d08bfa9a78737603e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
|