|
@@ -0,0 +1,11 @@
|
|
1
|
+from itertools import chain
|
|
2
|
+
|
|
3
|
+target = 34000000
|
|
4
|
+
|
|
5
|
+flatten = chain.from_iterable
|
|
6
|
+factors = lambda n: set(flatten((i, n//i) for i in range(1, int(n**0.5)+1) if n % i == 0))
|
|
7
|
+presents1 = lambda n: 10 * sum(x for x in factors(n))
|
|
8
|
+presents2 = lambda n: sum(11 * x for x in factors(n) if n // x <= 50)
|
|
9
|
+
|
|
10
|
+print(next(i for i in range(target) if presents1(i) > target))
|
|
11
|
+print(next(i for i in range(target) if presents2(i) > target))
|