summaryrefslogtreecommitdiff
path: root/074.py
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:21:45 +0200
committerReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:35:09 +0200
commit95341b61b030c9e1290f3b326cb7ec584f543aea (patch)
tree852386fa04d32eb859bca11c0eff7b5ef9e50f00 /074.py
parent571164d977f91925c4c76a292f74f5f93d09ae23 (diff)
moved files to higher directory after split to new repositoryHEADtrunk
Diffstat (limited to '074.py')
-rw-r--r--074.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/074.py b/074.py
new file mode 100644
index 0000000..adee894
--- /dev/null
+++ b/074.py
@@ -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
+