Загрузка данных



#5.
def f(n):
    r = bin(n)[2:]

    if n % 3:
        r = r + bin((n % 3) * 3)[2:]
    else:
        r = r + r[-3:]

    return int(r, 2)


for n in range(10000):
    if f(n) >= 76:
        print("5. ", n)
        break


#11
from math import *
k = 15
N = 12 + 10
i = ceil(log2(N))
k2 = 2
N2 = 100 - 10
i2 = ceil(log2(N2))
V0 = 32
V1 = ceil((k * i) / 8)
V2 = ceil((k2 * i2) / 8)
print("11. ", V0 - V1 - V2)


#12
print("12. ", 400 - 169)


#13
from ipaddress import *

for mask in range(30, 0, -1):
    net = ip_network(f"119.83.200.27/{mask}", 0)
    if net[0] == ip_address("119.83.192.0"):
        print("13. ", mask)
        break


#14
f = (4 ** 1014) + (2 ** 1012) - 7
print("14. ", bin(f)[2:].count("1"))


#15
for A in range(120, 0, -1):
    flag = True
    for x in range(100):
        for y in range(100):
            f = (x + 3 * y > A) or (y < 30) or (x < 30)
            if not f:
                flag = False
                continue
        if not flag:
            flag = False
            continue

    if flag:
        print("15. ", A)
        break


#16
from functools import *

@lru_cache(100)
def F(n):
    if n <= 5:
        return 1000
    else:
        return F(n - 2) + n + 3
    

for i in range(53081):
    F(i)

print("16. ", 3 * F(53080) - (F(53078) + F(53076) + F(53074)))


#19, 20, 21
from sys import setrecursionlimit
setrecursionlimit(1000000)


def game(s, n):

    if s <= 15:
        return n % 2 == 0
    elif n == 0:
        return 0
    

    f = []
    for k in range(2, 10):
        if s % k == 0:
            f.append(game(s - k, n - 1))
    if len(f) == 0:
        s = s - 1
        for k in range(2, 10):
            if s % k == 0:
                f.append(game(s - k, n - 1))
    if n % 2:
        return any(f)
    else:
        return all(f)
    

for i in range(16, 1000):
    if game(i, 2):
        print("19. ", i)
        break

c = 0
print("20. ", end=" ")
for i in range(16, 1000):
    if game(i, 3) and not game(i, 1):
        print(i, end=" ")
        c = c + 1
    if c >= 2:
        print("", end=f"\n")
        break

for i in range(16, 1000):
    if game(i, 4) and not game(i, 2):
        print("21. ", i)
        break


#23
def f(a, b):
    if a > b and a:
        return 0
    elif a == b:
        return 1
    return f(a + 1, b) + f(a * 2, b) + f(a * 3, b)


def f24(a, b):
    if a > b or a == 24:
        return 0
    elif a == b:
        return 1
    return f(a + 1, b) + f(a * 2, b) + f(a * 3, b)


def f27(a, b):
    if a > b or a == 27:
        return 0
    elif a == b:
        return 1
    return f(a + 1, b) + f(a * 2, b) + f(a * 3, b)


print("23. ", f(9, 81) - f24(9, 81) - f27(9, 81))
print("23 - неверно, верное потом найдёшь")


#24
"""
f = open("24.txt").read()
mx = 0
print(f.count("EE"))
for x in "QWERTYUIOPASDFGHJKLZXCVBNM":
    r = f.count(f"E{x}")
    if r > mx:
        mx = r
        print("24. ", x, r)

#Другой путь        
d = dict()
for i in range(len(f) - 1):
    if f[i] == "E":
        d[f[i + 1]] = d.get(f[i + 1], 0) + 1
print(d)
"""

#25
def div(n):
    s = set()
    for x in range(2, int(n ** 0.5) + 1):
        if n % x == 0:
            s.add(x)
            s.add(n // x)
    return sorted(s)


#print("25. Debug: ", div(100))


def m(n):
    s = set()
    for x in range(2, int(n ** 0.5) + 1):
        if n % x == 0:
            s.add(x)
            s.add(n // x)
    s = sorted(s)
    if len(s) < 2:
        return 0
    else:
        return sum(sorted(s)[-2:])
    

print("№ 25. ")
c = 0
n = 11_000_000
while c < 5:
    mn = m(n)
    if mn > 0 and mn < 10_000:
        c = c + 1
        print(mn)
    n = n + 1


#26, 27 to be continued