Похожие презентации:
Shpora_2026
1.
#2 автокодfrom itertools import *
def F(w, x, y, z):
return (not (((x <= w) <= (w == z)))) and y
for a1, a2, a3, a4, a5 in product([0, 1], repeat=5):
table = [(a1, 0, 1, 0), (0, a2, a3, 0), (a4, 1, 1, a5)]
if len(set(table)) == len(table):
for i in permutations('wxyz'):
if [F(**dict(zip(i, r))) for r in table] == [1, 1, 1]:
print(*i, sep='')
#2 база
print('x y z w')
for x in range(2):
for y in range(2):
for z in range(2):
for w in range(2):
f = (w == z) or (not(y <= w)) or (not(x))
if f == 0:
print(x, y, z, w)
#6 задание
from turtle import *
tracer(0)
k = 10
lt(90)
for i in range(3): fd(32*k), rt(90), fd(38*k), rt(90)
up()
fd(25*k), rt(90), fd(21*k), lt(90)
down()
for i in range(3): fd(29*k), rt(90), back(18*k), rt(90)
up()
for x in range(-50, 50):
for y in range(-50, 50):
goto(x*k, y*k)
dot(3, 'red')
done()
#5 задание
def F(x):
if x == 0: return '0'
s = ''
while x > 0:
s = str(x % 3) + s
x = x // 3
return s
Важные проверки
r = r + r[-3:] - дописать 3 последних
'10' + r[2:] + '0' - заменить два первых разряда
на 10 и дописать 0
sm = sum(int(x) for x in r) - сумма цифр числа
otv = []
for n in range(1, 1000):
r = F(n)
if n % 3 == 0:
r = '1' + r + '02'
else:
r = r + F(n % 3 * 5)
r = int(r, 3)
if r >= 177:
otv.append(n)
print(min(otv))
str(x) == str(x)[::-1] - палиндром
x ** 0.5 == int(x ** 0.5) - полный квадрат
len(set(str(x))) == len(str(x)) - все цифры числа
уникальные
#8 задание список
from itertools import product
n = 0
for i in product(sorted('СТРОКА'), repeat = 5):
s = ''.join(i)
n += 1
if n % 2 == 0 and s[0] not in 'АСТ' and s.count('О') == 2:
print(n)
#8 числа
from itertools import product
k = 0
for i in product(range(16), repeat=3):
if i[0] != 0:
if len(i) == len(set(i)):
if i[0] % 2 != i[1] % 2 != i[2] % 2:
k += 1
print(k)
черепаха:
#9 найти номер
n=0
for i in open('9'):
a = [int(x) for x in i.split()]
n += 1
p3 = [x for x in a if a.count(x) == 3]
p1 = [x for x in a if a.count(x) == 1]
if len(p3) == 3 and len(p1) == 4:
if sum(p1)/len(p1) > p3[0]:
print(n)
#9 найти кол-во строк
n=0
for i in open('9'):
a = [int(x) for x in i.split()]
p3 = [x for x in a if a.count(x) == 3]
p1 = [x for x in a if a.count(x) == 1]
if len(p3) == 3 and len(p1) == 4:
if sum(p1)/len(p1) > p3[0]:
n += 1
print(n)
#9 найти сумму строки
n=0
for i in open('9'):
a = [int(x) for x in i.split()]
n += 1
p3 = [x for x in a if a.count(x) == 3]
p1 = [x for x in a if a.count(x) == 1]
if len(p3) == 3 and len(p1) == 4:
if sum(p1)/len(p1) > p3[0]:
print(sum(a))
#9 найти средние ариф
otv = []
for i in open('9'):
a = [int(x) for x in i.split()]
n += 1
p3 = [x for x in a if a.count(x) == 3]
p1 = [x for x in a if a.count(x) == 1]
if len(p3) == 3 and len(p1) == 4:
if sum(p1)/len(p1) > p3[0]:
otv += a
print(sum(otv)/len(otv))
13 на кратность кол-во единиц
13 на компы
from ipaddress import *
k=0
for ip in ip_network('112.208.0.0/255.255.128.0', 0):
ip_2 = f'{ip:b}' # или bin(int(ip))[2:].zfill(32)
if ip_2.count('1') % 11 == 0:
k += 1
print(k)
from ipaddress import *
net = ip_network('191.128.66.83/255.192.0.0', 0)
print(net[1]) # наименьший ПК
print(net[-2]) # наибольший ПК
#11 длина
from math import *
for dlina in range(1, 1000):
alf = 10 + 62
i = ceil(log2(alf))
V = ceil(dlina * i / 8)
if V * 5_895_222 > 23 * 1024 * 1024:
print(dlina)
#11 алф
from math import *
for x in range(1, 1000):
alf = x
dlina = 172
bit = ceil(log2(alf))
V = ceil(dlina * bit / 8)
if 356984 * V >= 54 * 1024 ** 2:
print(x)
14 на выражение
x = 4 * 3125**2019 + 3 * 625**2020 # выражение из задачи
k=0
while x > 0:
n = x % 25 # цифра в 25-сс
if n > 10: # проверка
k += 1 # кол-во подходящих
x = x // 25
print(k)
так же, если попросили сумму цифр, то не k += 1, а k += n !!!
искать маску, первое пишешь узел, проверка с
адресом сети
14 Операнды, если сс больше 36 то расставляем индексы
from ipaddress import *
for mask in range(33):
net = ip_network(f'192.75.64.98/{mask}', 0)
if str(net.network_address) == '192.75.64.0':
print(net.netmask)
from string import printable
for x in printable[:27]:
s = int('123' + x + '24', 27) + int('135' + x + '78', 27)
if s % 26 == 0:
print(s // 26)
Важно! натуральные или положительные подбор с 1, а если не
отрицательные то с 0!
15 - Дел
def F(A, x):
return (not (x % A == 0)) <= ((x % 28 == 0) <= (not (x % 49 == 0)))
for A in range(1, 1000):
if all(F(A, x) for x in range(1, 1000)):
print(A)
14 найти x в записи выражения в 7
сс содержится 70 нулей
for x in range(1, 2031):
s = 7**91 + 7**160 - x
k=0
while s > 0:
if s % 7 == 0: # наход нулей
k += 1
s = s // 7
if k == 70:
print(x)
from functools import lru_cache
def F(n): return 3 * G(n - 3) + 7
@lru_cache(100)
def G(n):
if n <= 20: return n + 2
if n > 20: return G(n - 3) + 1
for n in range(1, 37811): G(n)
print(F(37811))
!!!Если в задание написано F(n + …) то цикл делаем обратный
for n in range(10000, 1, -1) как пример
15 - x и y
def F(A, x, y):
return (x + 2*y > A) or (y < x) or (x < 30)
for A in range(0, 1000):
if all(F(A, x, y) for x in range(0, 1000) for y in range(0, 1000)):
print(A)
15 - конъюнкция
def F(A, x):
return (x & 39 == 0) or ((x & 11 == 0) <= (not (x & A == 0)))
for A in range(0, 1000):
if all(F(A, x) for x in range(0, 1000)):
print(A)
15 - отрезки (x принадлежит B = [10,20] в питоне записываем
10<=x<=20!)
# Наименьшую длину
otvet = []
for x in range(1, 200):
B = 24 <= x <= 90
C = 47 <= x <= 115
A = False
F = C <= (((not A) and B) <= (not C))
if F == 0:
otvet.append(x)
print(otvet[-1] - otvet[0])
# Наибольшую длину
otvet = []
for x in range(1, 200):
B = 24 <= x <= 90
C = 47 <= x <= 115
A = True
F = C <= (((not A) and B) <= (not C))
if F == 1:
otvet.append(x)
print(otvet[-1] - otvet[0])
from functools import lru_cache
@lru_cache(100)
def F(n):
if n < 10: return 3
if n >= 10: return (n + 4) * F(n - 5)
for n in range(1, 257487): F(n)
print((F(257487)//683 + F(257477)//67)//F(257472))
17)
a = [int(i) for i in open('17')] # база
mx_39 = max([i for i in a if 999 < abs(i) < 10000 and abs(i) % 100 == 39])
otvet = []
for i in range(len(a) - 1):
if ((999 < abs(a[i]) < 10000) + (999 < abs(a[i + 1]) < 10000)) == 1:
if (a[i] + a[i + 1]) ** 2 <= mx_39 ** 2:
otvet.append(a[i] + a[i + 1])
print(len(otvet), max(otvet))
a = [int(x) for x in open('17')]
mx33 = max([x for x in a if abs(x) % 100 == 33])
otv = []
for i in range(len(a) - 2):
s = a[i:i+3]
if len([x for x in s if 9 < abs(x) < 100]) == 2:
if sum(s)**2 < mx33:
otv.append(sum(s))
print(len(otv), max(otv))
Автокод для 1 задания
from itertools import permutations
table = '567 348 278 27 168 15 134 235'.split()
graph = 'AB BH AH AE HF FG EG EC GC CD FD'.split()
print('1 2 3 4 5 6 7 8')
for i in permutations('ABCDFHGE'):
if all(str(i.index(x) + 1) in table[i.index(y)] for x, y in graph):
print(*i)
2.
19-21 выигрыш <= 15, ходы -3 -7 поделить на 4def F(k, x):
if k <= 15: return x % 2 == 0 # условие win
if x == 0: return 0
h = [F(k - 3, x - 1), F(k - 7, x - 1), F(k // 4, x - 1)] # ходы
return any(h) if x % 2 != 0 else all(h)
print(min([k for k in range(16, 1000) if F(k, 2)])) # 19
print([k for k in range(16, 1000) if not F(k, 1) and F(k, 3)]) # 20
print(min([k for k in range(16, 1000) if not F(k, 2) and F(k, 4)])) # 21
23 - не проходит через 9, проходит через 12,
команды -1 -3 и поделить на 2, из 19 в 3,
на уменьшение значит второй if x < y
def F(x, y):
if x == y: return 1
if x < y or x == 9: return 0
return F(x - 1, y) + F(x - 3, y) + F(x // 2, y)
print(F(19, 12) * F(12, 3))
поменять местами
def F(x, y):
if x > y:
return 0
if x == y:
return 1
ed = x % 10
dec = x // 10 % 10
19-21 две кучи, в 19 неудачный ход, то есть везде any!!!
s = F(x + 1, y)
def F(k1, k2, x):
if k1+k2 >= 145: return x % 2 == 0 # условие win
if x == 0: return 0
h = [F(k1+1,k2,x-1), F(k1*2,k2,x-1), F(k1,k2+1,x-1), F(k1,k2*2,x-1)] # ходы
return any(h) if x % 2 != 0 else all(h)
print([k for k in range(1, 138) if F(7, k, 2)]) # 19 везде any из-за неудач ход! 35!
print([k for k in range(1, 138) if not F(7, k, 1) and F(7, k, 3)]) # 20
print(min([k for k in range(1, 138) if not F(7, k, 2) and F(7, k, 4)]))
Простые делители
def D(x):
dels = []
for d in range(2, int(x ** 0.5) + 1):
if x % d == 0:
dels.append(d)
dels.append(x//d)
return set(dels)
for x in range(5_400_001, 5_410_001):
dels = D(x)
p = [d for d in dels if len(D(d)) == 0]
if len(p) > 0:
M = min(p) + max(p)
if M > 60000 and str(M) == str(M)[::-1]:
print(x, M)
23 - проходит через 8, команды +1 умножить 2
и умножить 3, из 2 в 30, на увеличение
значит второй if x > y
def F(x, y):
if x == y: return 1
if x > y: return 0
return F(x + 1, y) + F(x * 2, y) + F(x * 3, y)
print(F(2, 8) * F(8, 30))
if dec < ed:
new_x = x // 100 * 100 + ed * 10 +
dec
s += F(new_x, y)
return s
print(F(110, 154))
Простые множители
6-значные в виде суммы (четного и дел на 197) и натуральной степени 5
def M(x):
for d in range(2, int(x ** 0.5) + 1):
if x % d == 0:
return [d] + M(x // d)
return [x]
for x in range(6_651_221, 6_671_221):
su = M(x)
if len(su) == 2:
if all(str(d).count('2') == 1 for d in su):
print(x, max(su))
два указателя макс BC - не более 180
# a = open('24-3.txt').readline()
# k_BC = 0
#l=0
# mx = 0
# for r in range(len(a)):
# if a[r-1:r+1] == 'BC': k_BC += 1
#
# if k_BC <= 180: mx = max(mx, r - l + 1)
#
# while k_BC > 180:
#
if a[l:l+2] == 'BC': k_BC -= 1
#
l += 1
# print(mx)
два цикла с разворотом (надо было чтобы оканч на CAT
# a = open('24-7.txt').readline()[::-1]
# mx = 1
# for l in range(len(a) - 2):
# if a[l:l+3] == 'TAC':
#
for r in range(l + mx, len(a)):
#
s = a[l:r+1]
#
if s.count('1') == 700 and s.count('TAC') >= 4:
#
mx = max(mx, len(s))
#
if s.count('1') > 700: break
# print(mx)
otv = []
for x in range(394, 1_000_000, 394):
for n in range(1, 10):
s = x + 5 ** n
if len(str(s)) == 6 and str(s).count('1') == 0:
otv.append([s, n])
for s, n in sorted(otv)[:7]:
print(s, n)
Маска
from fnmatch import fnmatch
for x in range(141, 10**8 + 1, 141):
if fnmatch(str(x), '1234*7'):
print(x, x // 141)
сплит макс BC - не более 180
# a = open('24-7.txt').readline()
# mx = 0
# a = a.replace('CD', 'C D').split()
# for i in range(len(a) - 160):
# s = ''.join(a[i:i+161])
# mx = max(mx, len(s))
# print(mx)
два цикла на мин
# mn = 10000
# a = open('24-8.txt').readline()
# for l in range(len(a)):
# for r in range(l + mn, l, -1):
#
s = a[l:r+1]
#
if s.count('RSQ') == 130 and s[-1] != 'Q':
#
mn = min(mn, len(s))
#
if s.count('RSQ') < 130: break
# print(mn)
27 задание Карлики
cl1 = []
cl2 = []
red = []
for i in open('27A'):
x, y, type = i.replace(',', '.').split()
x, y = float(x), float(y)
if type[0] == 'M' and type[2:] == 'III': red.append([x, y])
if y < 15: cl1.append([x, y])
if y > 15: cl2.append([x, y])
# print(len(cl1), len(cl2)) # 114 121
from math import dist
def center(cl):
mn = []
for p1 in cl:
s = sum(dist(p1, p2) for p2 in cl)
mn.append([s, p1])
return min(mn)[1]
p1 = center(cl1)
mn = []
for pr in red:
s = dist(p1, pr)
mn.append([s, pr])
Ax, Ay = min(mn)[1]
print(int(Ax * 10000), int(Ay * 10000))
y1, y2, y3 = [], [], []
o1, o2, o3 = [], [], []
cl1, cl2, cl3 = [], [], []
for i in open('27Б'):
x, y, type = i.replace(',', '.').split()
x, y = float(x), float(y)
if y < 30:
cl1.append([x, y])
if type[0] == 'K' and type[2:] == 'III': o1.append([x, y])
if type[0] == 'G' and type[2:] == 'V': y1.append([x, y])
Обрезание
# a = open('24-2.txt').readline()
# for i in 'AEIOUY': a = a.replace(i, 'A')
# a = a.split('A')
# mn = 10**10
# for s in a[:-1]:
# while s.count('20') >= 26:
#
if s.count('20') == 26: mn = min(mn, len(s) + 1)
#
s = s[1:]
# print(mn)
ариф выражение с не отриц числами
from re import *
a = open('24_20813.txt').readline()
s = r'(([1-9][0-9]*)|[0])([*-](([1-9][0-9]*)|[0]))*'
mx = 0
for i in finditer(s, a):
mx = max(mx, len(i.group(0)))
print(mx)
ариф выражение с не отриц числами равно 0
с повторами в рег.
from re import *
a = open('24_20813.txt').readline()
s = r'(([1-9][0-9]*)|[0])([*-](([1-9][0-9]*)|[0]))*'
pov = rf’(?=({s}))’
mx = 0
for i in finditer(pov, a):
if eval(i) == 0:
mx = max(mx, len(i.group(1)))
print(mx)
27 задание c ЕГКР
cl1, cl2 = [], []
for i in open('27'):
x, y = [float(j) for j in i.replace(',', '.').split()]
if y < 15: cl1.append([x, y])
if y > 15: cl2.append([x, y])
from math import dist
def center(cl):
mn = []
for p1 in cl:
s = sum(dist(p1, p2) for p2 in cl)
mn.append([s, p1])
return min(mn)[1]
# print(len(cl1), len(cl2)) 301 344
x1, y1 = center(cl1)
x2, y2 = center(cl2)
A1 = len([1 for x, y in cl2 if y < y2])
A2 = abs(x1 - x2)
print(A1, int(A2 * 10000))
cl1, cl2, cl3 = [], [], []
for i in open('27'):
x, y = [float(j) for j in i.replace(',', '.').split()]
if x < 24 and y < 20: cl1.append([x, y])
if y > 20: cl2.append([x, y])
if x > 24: cl3.append([x, y])
from math import dist
def center(cl):
mn = []
for p1 in cl:
s = sum(dist(p1, p2) for p2 in cl)
mn.append([s, p1])
return min(mn)[1]
# print(len(cl1), len(cl2), len(cl3)) 200 902 148
if y > 30 and x < 16:
cl2.append([x, y])
if type[0] == 'K' and type[2:] == 'III': o2.append([x, y])
if type[0] == 'G' and type[2:] == 'V': y2.append([x, y])
if x > 16:
cl3.append([x, y])
if type[0] == 'K' and type[2:] == 'III': o3.append([x, y])
if type[0] == 'G' and type[2:] == 'V': y3.append([x, y])
from math import dist
def center(cl):
mn = []
for p1 in cl:
s = sum(dist(p1, p2) for p2 in cl)
mn.append([s, p1])
return min(mn)[1]
x3, y3 = center(cl3)
B1 = len([1 for x, y in cl3 if x3 - 0.9 < x < x3 + 0.9 and y3 - 0.9 < y < y3 + 0.9])
x2, y2 = center(cl2)
x1, y1 = center(cl1)
B2 = abs(y2 - y1)
print(B1, int(B2 * 10000))
3 Задание:
На сколько увеличилось кол-во упаковок = поступления упаковок минус продажа упаковок
# print(len(o1), len(o2), len(o3))
На сколько увеличилось кол-во кг = поступления кг минус продажа кг
B1 = dist(center(cl1), center(cl3))
Определите выручку за продажу = ставим продажи и кол-во упаковок умножаем на цену
r1 = [dist(a, b) for a in y1 for b in y1 if a != b]
r2 = [dist(a, b) for a in y2 for b in y2 if a != b]
r3 = [dist(a, b) for a in y3 for b in y3 if a != b]
B2 = max(r1 + r2 + r3)
4 Задание:
print(int(B1 * 10000), int(B2 * 10000))
22 Задание:
Внимательно читай, сумма или произведения длин, наименьшее по значению или наибольшое
=МАКС(ВПР(C2;A:F;6;0);ВПР(D2;A:F;6;0);ВПР(E2;A:F;6;0))+B2