# 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)
