Немного теории.
- Функция bin(s) формирует строковое представление числа s в двоичном виде.
Например:
bin(43) #Двоичное представление числа 43'0b101011' #первые два символа (0b) обозначают двоичное представление, их нужно убрать.
Итого, чтобы получить двоичную строку, мы должны взять срез, начиная с третьего символа (с индексом 2):
bin(43)[2:]'101011'
- Функция sorted(s) возвращает отсортированную последовательность
sorted('zdffgffesdfaargg')['a', 'a', 'd', 'd', 'e', 'f', 'f', 'f', 'f', 'f', 'g', 'g', 'g', 'r', 's', 'z']
- Функция
int(s,2), преобразует строковую двоичную запись числа в десятичное число
int('101011',2)43
Что повторить по Python перед решением задания 5
- Целые числа и системы счисления:
bin(n),int(s, base), перевод в/из разных оснований, работа с двоичными строками. - Строки: индексация/срезы (
s[2:],s[:-1]),len,count,replace,join,zfill,strip. - Условия и циклы:
if/elif/else,for, итерация по диапазонамrange. - Списки, методы списков, списковые включения.
- Функции: определение функций, возврат результата, разбор примеров с параметрами.
- Арифметика цифр числа: выделение цифр через
//и%либо перевод в строку. - Форматирование: f-строки, аккуратный вывод и отладочные принты.
Приёмы, необходимые для решения вводных заданий
Перебор диапазонов, кратность, составные условия
for m in range(50, 101):
for n in range(1000, 10001):
if n % m == 0 and n % 143 == 0:
print(m, n)
Перевод в двоичный вид и удаление префикса 0b
nums = [45, 110, 2323, 3456]
binaries = [bin(x)[2:] for x in nums]
print(binaries) # ['101101', '1101110', ...]
Подсчёт единиц в двоичной записи
ones = [(x, bin(x).count('1')) for x in nums]
print(ones)
Манипуляции двоичными строками
- Удалить последний символ и приписать справа ’11’:
s = s[:-1] + '11' - Заменить последний символ на второй слева:
s = s[:-1] + s[1]
Инверсия битов (8-бит) и перевод обратно в десятичное
n = 13
b = bin(n)[2:].zfill(8) # '00001101'
inv = b.translate(str.maketrans('01', '10')) # '11110010'
res = int(inv, 2) # 242
print(res)
Работа с десятичными цифрами числа
x = 583
a = x // 100 # сотни
b = (x // 10) % 10 # десятки
c = x % 10 # единицы
print(a + b, b + c)
Разбор «простого» задания (чётность, два дописанных бита)
Условие (кратко): по натуральному N берём двоичную запись, справа дважды дописываем бит чётности (остаток от деления суммы битов на 2): сначала для исходной записи, затем — для уже расширенной. Полученное число — это R. Найти наименьшее N, для которого R > 77.
Алгоритм
- Пусть
b = bin(N)[2:]. p1 = sum(int(c) for c in b) % 2,b1 = b + str(p1).p2 = sum(int(c) for c in b1) % 2,b2 = b1 + str(p2).R = int(b2, 2). Ищем минимальноеN, при которомR > 77.
Реализация на Python
def build_R(N: int) -> int:
b = bin(N)[2:]
p1 = sum(int(c) for c in b) % 2
b1 = b + str(p1)
p2 = sum(int(c) for c in b1) % 2
b2 = b1 + str(p2)
return int(b2, 2)
answer = None
for N in range(1, 10**6):
if build_R(N) > 77:
answer = N
break
print(answer) # 19
Проверка найденного минимума вручную
N = 19,b = 10011, сумма битов = 3 ⇒p1 = 1,b1 = 100111.- Сумма битов в
b1= 4 ⇒p2 = 0,b2 = 1001110. R = 0b1001110 = 78 > 77— условие выполнено.
Ответ: 19.
Почему это действительно минимум? Для меньших
N(например, 18:b=10010) двукратное дописывание чётности даётR ≤ 77. Перебор по возрастаниюNостанавливается впервые наN=19, что гарантирует минимальность.
Разбор «усложнённого» задания (четырёхзначное число → конкатенация сумм)
Правило преобразования: дано четырёхзначное число abcd (без ведущего нуля). Считаем три суммы: s1=a+b, s2=b+c, s3=c+d.
Удаляем наименьшую из сумм (если минимумов несколько — удаляем только один из них). Две оставшиеся суммы записываем подряд в порядке неубывания (как строку без разделителей).
Реализация преобразования
def transform(x: int) -> str:
# x = abcd, 1000 ≤ x ≤ 9999
a = x // 1000
b = (x // 100) % 10
c = (x // 10) % 10
d = x % 10
sums = [a + b, b + c, c + d]
m = min(sums)
# удалить лишь ОДНО вхождение минимальной суммы
sums.remove(m)
sums.sort()
return f"{sums[0]}{sums[1]}"
# Примеры
print(transform(3527)) # s: 8,7,9 → удаляем 7 → '89'
print(transform(7701)) # s: 14,7,1 → удаляем 1 → '714'
Типичные вопросы и подходы к решению
- Прямое вычисление результата для конкретного входа — просто вызвать
transform(x). - Поиск числа по условию на результат (например, найти минимальное
x, для которого результат равен/больше/меньше заданного):goal = "1314" ans = min((x for x in range(1000, 10000) if transform(x) == goal), default=None) print(ans) - Перебор с фильтром по множеству входов (учёт запрета на ведущий ноль автоматически выполняется диапазоном
1000..9999).
Важные нюансы:
1) При равенстве нескольких минимальных сумм удаляем только ОДНУ из них.
2) Конкатенация — это строковая запись, поэтому для сумм > 9 результат может иметь 3–4 цифры (например, «714»).
3) Требуется порядок неубывания двух оставшихся сумм — сначала меньшая (или равная), потом большая.
Вводные задачи
- Даны два диапазона чисел:
M [50:100]иN [1000:10000]. Выведите все пары чисел, где N кратно M и N кратно 143. Смотреть разбор Вариант 2 - Преобразуйте десятичные числа
45, 110, 2323, 3456в двоичную форму и выведите результат. - Посчитайте сколько единиц в каждом из этих двоичных чисел
- Дана строка
S. Удалите ее последний символ и допишите справа ‘11’ - Дана строка
S. Замените ее последний символ на второй слева символ. - Дано восьмибитное двоичное представление числа N. Замените числа на противоположные (вместо 0 – 1, вместо 1 — 0). Выведите результат в десятичном виде. Например.
- Дано число
N = 13. Алгоритм работает следующим образом. - Восьмибитная двоичная запись числа
N: 00001101. - Все цифры заменяются на противоположные, новая запись
11110010. - Десятичное значение полученного числа
242
- Дано трехзначное число. Сложите две первых цифры и две последних. Выведите два этих числа в порядке возрастания.
- Дано трехзначное число N. Из цифр, образующих десятичную запись N, постройте наибольшее и наименьшее возможные двузначные числа. Смотреть разбор Вариант2
Задания для подготовки
Простой уровень
- https://kompege.ru/task?id=4
- https://kompege.ru/task?id=49
- https://kompege.ru/task?id=262 Смотреть разбор
- https://kompege.ru/task?id=350 Смотреть разбор Вариант 2
Средний уровень
- https://inf-ege.sdamgia.ru/problem?id=60247 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=33475 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=15818 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=14767 Смотреть разбор
- https://kompege.ru/task?id=19695 Смотреть разбор
- https://kompege.ru/task?id=206 Смотреть разбор Вариант 2
- https://inf-ege.sdamgia.ru/problem?id=52176 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=17370 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=68267 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=70532 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=47209 Смотреть разбор
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=1717 Смотреть разбор Вариант 2
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=5438 Смотреть разбор
- https://education.yandex.ru/ege/variants/c01534c6-0b3e-4da7-9d99-6c8d759babaf/task/5 Смотреть разбор
- https://kompege.ru/task?id=23189 Смотреть разбор
- https://kompege.ru/task?id=23364 Смотреть разбор
- https://kompege.ru/task?id=22272 Смотреть разбор
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=141 Смотреть разбор
Сложный уровень
- https://inf-ege.sdamgia.ru/problem?id=61385 Смотреть разбор Вариант 2
- https://inf-ege.sdamgia.ru/problem?id=56505 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=73831 Смотреть разбор
- https://kompege.ru/task?id=5899 Смотреть разбор
- https://kompege.ru/task?id=4870
- https://kompege.ru/task?id=4869
- https://kompege.ru/task?id=4868
- https://kompege.ru/task?id=4867
- https://kompege.ru/task?id=4317
- https://kompege.ru/task?id=3755
- https://kompege.ru/task?id=3754
- https://kompege.ru/task?id=3726
- https://kompege.ru/task?id=3176
- https://kompege.ru/task?id=3073
- https://kompege.ru/task?id=2851
- https://kompege.ru/task?id=2514
- https://kompege.ru/task?id=565
- https://kompege.ru/task?id=488
- https://kompege.ru/task?id=457
- https://kompege.ru/task?id=206
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7667
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7666
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7650
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7649
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6861
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6860
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6534
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6533
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6532
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6376
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6283
- https://education.yandex.ru/ege/task/c610ec9b-31e4-46b6-b58c-45523c64cbc9
- https://education.yandex.ru/ege/task/11a28b89-356d-4baa-8ab4-3684fa4c1752
- https://education.yandex.ru/ege/task/65bc5b5a-439d-4f2e-b1cd-c6927ace1c2d
- https://education.yandex.ru/ege/task/4daadd78-2e94-4123-b804-41951f89401c
- https://education.yandex.ru/ege/task/1fba1cbc-57aa-4874-b06d-1b434166e30c
- https://education.yandex.ru/ege/task/0aee931e-3422-4216-ba75-793cf3df8188
- https://education.yandex.ru/ege/task/b1614cdd-7e48-445c-90b0-1e6f35c7bcfa
- https://education.yandex.ru/ege/task/9dc9bcae-00bb-4e7a-b93e-9e03ec567fad
- https://education.yandex.ru/ege/task/f1975d41-7a47-4727-97c9-9b405f594a8b
- https://education.yandex.ru/ege/task/f831cc07-c244-4635-9989-adcb36a54e26
- https://education.yandex.ru/ege/task/d82e2ec1-ce45-4e1f-b38b-c468f2886255
- https://education.yandex.ru/ege/task/4e651673-c848-47cd-8dab-813092d13201
- https://education.yandex.ru/ege/task/3ef214b5-fef2-4500-9f74-5be832f60ef6
- https://education.yandex.ru/ege/task/38af853e-0284-43e3-975e-8dd914c0f67d
- https://education.yandex.ru/ege/task/f4f17581-c911-4ab0-9a72-a70827259b20
- https://education.yandex.ru/ege/task/066b8088-3cdb-4504-8403-9d62e96d195e
- https://education.yandex.ru/ege/task/a546d582-5cbb-4bac-98dd-3dd322c920a7
- https://education.yandex.ru/ege/task/8e51c95b-32f5-4940-856d-2ee13cb67938
- https://education.yandex.ru/ege/task/0f0be116-5c24-4561-8675-493fe3c6ba53
- https://education.yandex.ru/ege/task/b00be403-f157-4e28-8608-f9ee01a687f6
- https://education.yandex.ru/ege/task/061b254a-18c2-4d3d-a8e0-d3866627301c
- https://education.yandex.ru/ege/task/af4e8a95-d5b5-4698-be21-428478bda513
- https://education.yandex.ru/ege/task/326fe818-6354-4d1c-b1ff-3d8d646f1705
- https://education.yandex.ru/ege/task/9fb60578-88e4-465d-b603-dbf30d312808
- https://education.yandex.ru/ege/task/01488fc0-61e5-4122-9c73-a3cb09336b7a
- https://education.yandex.ru/ege/task/edf95f47-8e3d-4eab-85f0-3a067fb5b71e
- https://education.yandex.ru/ege/task/306190bc-0269-4687-b13c-1178993a1a4f
- https://education.yandex.ru/ege/task/940ab076-43e9-4122-a09c-d7487af8db0b
- https://education.yandex.ru/ege/task/96524f2d-3f1b-458d-9ee1-9b6d45c39389
- https://education.yandex.ru/ege/task/19478677-8ce2-4524-bcfe-4455e9579547
- https://education.yandex.ru/ege/task/aee298d7-cf16-40a1-8b47-b0d531e27555
- https://education.yandex.ru/ege/task/afe8a9d0-8162-4f92-9e87-1c2dc7265290
- https://education.yandex.ru/ege/task/79deecaa-26a4-4f6b-aa5c-b0e096d4bfd5
- https://education.yandex.ru/ege/task/b86adce8-10c7-400c-8035-e4ad8d1962f2
- https://education.yandex.ru/ege/task/638ac2c9-defe-4ca9-971a-ee65a1774d31
- https://education.yandex.ru/ege/task/da798c09-d5d5-46c3-bbfb-16f606da3ef5
- https://education.yandex.ru/ege/task/998fbc59-2d80-4b1c-9ac4-6b6386b090ed
- https://education.yandex.ru/ege/task/a1d2eaa6-5f3c-4d17-9779-9da6ed05db0c
- https://education.yandex.ru/ege/task/ce2652cd-210b-4d3e-87ea-c12b35ba66a7
- https://education.yandex.ru/ege/task/68e2d41e-021e-431c-abd3-acc31af765c7
- https://education.yandex.ru/ege/task/3910b57c-f60a-4958-95bd-94abcf8f402f
- https://education.yandex.ru/ege/task/95a61fe5-2fa7-4a10-b302-d782a7aa5a97
- https://education.yandex.ru/ege/task/71189626-0f31-4380-b790-94a173acd59a
- https://education.yandex.ru/ege/task/57ff1917-d44e-4cf3-89a6-097323fd9717
- https://education.yandex.ru/ege/task/8b25ff10-1c94-4d9a-a9ae-b0022a826315
- https://education.yandex.ru/ege/task/0dfc1ac7-4ecf-4203-867f-e460761a927d
- https://education.yandex.ru/ege/task/77c1be67-f039-48e3-8499-f677b04163e0
- https://education.yandex.ru/ege/task/ce959cfe-67fa-4b05-81dc-6a387f57d9a7
