# 1
def diagsum(n):
return sum([4 * x**2 - 6 * x + 6 for x in range(3, n + 1) if x % 2 != 0]) + 1
print('Sum of diagonal elements:', diagsum(1013))
print()
# 2
from itertools import permutations
def numsolutions():
num = 0
for perm in permutations('0123456789', 5):
if perm[0] == '0' or perm[1] == '0' or perm[2] == '0':
continue
r, s, x, z, v = perm
if int(r + s + r + x) + int(z + v + v) == int(s + r + x + s):
print('[' + r + s + x + z + v + ']:', r + s + r + x, '+', z + v + v, '=', s + r + x + s)
num += 1
return num
print('Solutions:', numsolutions())
print()
# 3
import collections
def same_permutation(a, b, c):
d = collections.defaultdict(int)
for x in str(a):
d[x] += 2
for x in str(b):
d[x] -= 1
for x in str(c):
d[x] -= 1
return not any(d.values())
def lower():
i, i2, i5 = 1, 2, 5
while not same_permutation(i, i2, i5):
i += 1
i2, i5 = i * 2, i * 5
return i
l = lower()
print(l, ': 2x = ', 2 * l, ': 5x = ', 5 * l)
IyAxCmRlZiBkaWFnc3VtKG4pOgogICAgcmV0dXJuIHN1bShbNCAqIHgqKjIgLSA2ICogeCArIDYgZm9yIHggaW4gcmFuZ2UoMywgbiArIDEpIGlmIHggJSAyICE9IDBdKSArIDEKCnByaW50KCdTdW0gb2YgZGlhZ29uYWwgZWxlbWVudHM6JywgZGlhZ3N1bSgxMDEzKSkKcHJpbnQoKQoKIyAyCmZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMKCmRlZiBudW1zb2x1dGlvbnMoKToKICAgIG51bSA9IDAKICAgIGZvciBwZXJtIGluIHBlcm11dGF0aW9ucygnMDEyMzQ1Njc4OScsIDUpOgogICAgICAgIGlmIHBlcm1bMF0gPT0gJzAnIG9yIHBlcm1bMV0gPT0gJzAnIG9yIHBlcm1bMl0gPT0gJzAnOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHIsIHMsIHgsIHosIHYgPSBwZXJtCiAgICAgICAgaWYgaW50KHIgKyBzICsgciArIHgpICsgaW50KHogKyB2ICsgdikgPT0gaW50KHMgKyByICsgeCArIHMpOgogICAgICAgICAgICBwcmludCgnWycgKyByICsgcyArIHggKyB6ICsgdiArICddOicsIHIgKyBzICsgciArIHgsICcrJywgeiArIHYgKyB2LCAnPScsIHMgKyByICsgeCArIHMpCiAgICAgICAgICAgIG51bSArPSAxCiAgICByZXR1cm4gbnVtCgpwcmludCgnU29sdXRpb25zOicsIG51bXNvbHV0aW9ucygpKQpwcmludCgpCgojIDMKaW1wb3J0IGNvbGxlY3Rpb25zCgoKZGVmIHNhbWVfcGVybXV0YXRpb24oYSwgYiwgYyk6CiAgICBkID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QoaW50KQogICAgZm9yIHggaW4gc3RyKGEpOgogICAgICAgIGRbeF0gKz0gMgogICAgZm9yIHggaW4gc3RyKGIpOgogICAgICAgIGRbeF0gLT0gMQogICAgZm9yIHggaW4gc3RyKGMpOgogICAgICAgIGRbeF0gLT0gMQogICAgcmV0dXJuIG5vdCBhbnkoZC52YWx1ZXMoKSkKCgpkZWYgbG93ZXIoKToKICAgIGksIGkyLCBpNSA9IDEsIDIsIDUKICAgIHdoaWxlIG5vdCBzYW1lX3Blcm11dGF0aW9uKGksIGkyLCBpNSk6CiAgICAgICAgaSArPSAxCiAgICAgICAgaTIsIGk1ID0gaSAqIDIsIGkgKiA1CiAgICByZXR1cm4gaQoKCmwgPSBsb3dlcigpCnByaW50KGwsICc6IDJ4ID0gJywgMiAqIGwsICc6IDV4ID0gJywgNSAqIGwpCg==