summaryrefslogtreecommitdiff
path: root/074.py
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