23205 #КЕГЭ по информатике #ЕГЭ23Автор: Основная волна 10.06.25
Уровень: Базовый
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Вычесть 1
B. Вычесть 2
C. Найти целую часть от деления на 3
Сколько существует программ, для которых при исходном числе 19 результатом является число 4, при этом траектория вычислений содержит число 6 и не содержит 13?
def F(a, b):
if a <= b or a == 13:
return a == b
return F(a-1, b) + F(a-2, b) + F(a//3, b)
print(F(19, 6) * F(6, 4))
Ответ: 212
· Объявление рекурсивной функции F с двумя параметрами a и b
· Проверяем условие остановки: если a ≤ b или a равно 13
· Если условие выше выполнено, возвращаем True только если a равно b, иначе False
· Рекурсивно вызываем функцию F для трех случаев: a-1, a-2 и a//3 (целочисленное деление)
· Суммируем результаты всех трех вызовов
· Вычисляем произведение F(19, 6) и F(6, 4)
· Выводим результат
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥3❤🔥2
range(10**9) почти не занимает памяти? #tpyrange() хранит только начальное, конечное значения и шаг. Он не создает список всех чисел сразу, а генерирует числа по мере необходимости!
range(10**9) в памяти хранится лишь небольшая информация: - старт (по умолчанию 0)
- финиш (10^9)
- шаг (по умолчанию 1)
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤8👍3🔥2
Автор: Основная волна 10.06.25
Уровень: Базовый
Определите количество пар последовательности, в которых только один из элементов является трёхзначным числом, a сумма элементов пары кратна минимальному трёхзначному элементу последовательности, оканчивающемуся на 7. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
M = [int(x) for x in open('17.txt')]
A = [x for x in M if len(str(abs(x))) == 3]
B = [x for x in A if abs(x) % 10 == 7]
R = []
for i in range(len(M)-1):
x, y = M[i], M[i+1]
if (x in A) + (y in A) == 1:
if (x + y) % min(B) == 0:
R.append(x + y)
print(len(R), min(R))Ответ: 9 107
· Читаем файл '17.txt', преобразуем каждую строку в целое число и создаем список M
· Создаем список A из чисел M, которые являются трехзначными (учитываем модуль для отрицательных)
· Создаем список B из чисел A, которые оканчиваются на 7 (учитываем модуль для отрицательных)
· Создаем пустой список R для хранения сумм пар, удовлетворяющих условиям
· Перебираем индексы i от 0 до предпоследнего элемента списка M
· Присваиваем x текущий элемент M[i], y - следующий элемент M[i+1]
· Проверяем, что только один из двух элементов (x или y) является трехзначным числом
· Проверяем, что сумма пары x+y делится нацело на минимальное число из списка B
· Если оба условия выполнены, добавляем сумму пары в список R
· Выводим количество найденных пар и минимальную сумму среди этих пар
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6🔥2
Python! #tpy
🆘 # (... может каких то еще, вроде ток эти две ) 🆘1️⃣ upper() - переводит строку в верхний регистр.
"hello".upper() → "HELLO"2️⃣ lower() - переводит строку в нижний регистр.
"HELLO".lower() → "hello"3️⃣ capitalize() - делает первую букву заглавной.
"hello".capitalize() → "Hello"4️⃣ title() - каждое слово с заглавной буквы.
"hello world".title() → "Hello World"5️⃣ strip() - удаляет пробелы с обоих концов.
"hello".strip() → "hello"6️⃣ lstrip() / rstrip() - удаляет пробелы слева/справа.7️⃣ replace(old, new) - заменяет подстроку.
"abc".replace("a", "x") → "xbc"8️⃣ split(sep) - разбивает строку по разделителю.
"a,b,c".split(",") → ["a", "b", "c"]0⃣ join(list) - собирает строку из списка.
",".join(["a", "b", "c"]) → "a,b,c"🔟 startswith(str) / endswith(str) - проверяет начало/конец строки.
"hello".startswith("he") → True1️⃣ 1️⃣ find(sub) - ищет подстроку и возвращает индекс.
"hello".find("ll") → 21️⃣ 2️⃣ count(sub) - считает количество вхождений.
"hello".count("l") → 21️⃣ 3️⃣ isdigit() - проверяет, состоит ли строка из цифр.
"123".isdigit() → True1️⃣ 4️⃣ isalpha() - проверяет, только ли буквы.
"abc".isalpha() → True1️⃣ 5️⃣ isalnum() - буквы или цифры без пробелов.
"a1".isalnum() → True1️⃣ 6️⃣ islower() / isupper() - проверяет регистр.1️⃣ 7️⃣ zfill(width) - дополняет нулями слева.
"7".zfill(3) → "007"1️⃣ 8️⃣ format() - подставляет значения в строку.
"{}".format(5) → "5"1️⃣ 0⃣ f-строки (Python 3.6+) - удобный формат.
f"{5}" → "5"2️⃣ 0️⃣ in – проверка наличия подстроки.
"a" in "abc" → True
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥2
Автор: Основная волна 10.06.25
Уровень: Базовый
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 45.172.106.203 и сетевой маской 255.255.252.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей.
Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344
from ipaddress import *
net = ip_network("45.172.106.203/255.255.252.0", 0)
for ip in net.hosts():
print(ip)
Ответ: 45172107254
· Импортируем все функции и классы из модуля ipaddress для работы с IP-адресами и сетями
· Создаем объект сети на основе IP-адреса 45.172.106.203 и маски 255.255.252.0
· Аргумент 0 означает, что не нужно проверять корректность адреса относительно маски
· Перебираем все хосты (адреса) в созданной сети, исключая адрес сети и широковещательный адрес
· Выводим каждый IP-адрес хоста из сети
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2🫡1
.index() в Python #tpyВы когда-нибудь сталкивались с задачей - найти позицию элемента в списке или строке? Тогда метод
.index() - то что вам нужно).index()? fruits = ['киви', 'банан', 'груша', 'банан', 'виноград']
pos = fruits.index('банан')
print(pos) # Выведет: 1
-
.index() ищет 'банан' и возвращает его первую позицию - 1 ⚠️ Важно: если элемента в последовательности нет - .index() вызовет ошибку ValueError.
Чтобы избежать этого, можно воспользоваться оператором in для проверки, на наличие элемента.🔥 Совет:
Для поиска всех вхождений элемента — используйте цикл или генератор, а .index() отлично подходит для быстрого определения первой позиции.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4👍2🔥1
Автор: Основная волна 10.06.25
Уровень: Базовый
На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 172 символов. В базе данных каждый серийный номер занимает одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 356 984 серийных номеров потребовалось не менее 54 Мбайт памяти. Определите минимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
from math import *
for alf in range(1, 10000):
bit = ceil(log2(alf))
byte = ceil(172 * bit / 8)
if 356984 * byte >= 54 * 1024 * 1024:
print(alf)
break
Ответ: 129
· Импортируем все функции из модуля math, включая log2 и ceil
· Перебираем значения alf от 1 до 9999 (ищем минимальное подходящее значение)
· Вычисляем минимальное количество бит, необходимое для кодирования одного символа алфавита размером alf
· Вычисляем размер одного пароля в байтах: 172 символа × бит на символ ÷ 8 бит в байте
· Проверяем, что общий размер 356984 паролей превышает или равен 54 МБ (54 × 1024 × 1024 байт)
· Выводим найденное значение размера алфавита
· Прерываем цикл после нахождения первого подходящего значения (минимального alf)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
🔥 ЕГЭ по информатике - 18 и 19 июня
по остальным датам:
Полное расписание ЕГЭ 2026:
1 июня
-- история, литература, химия
4 июня
-- русский язык
8 июня
-- математика (базовый и профильный уровни)
11 июня
-- обществознание, физика
15 июня
-- биология, география, иностранные языки
(письменная часть)
18 и 19 июня
-- информатика и иностранные языки
(устная часть)
22–25 июня
- пересдача любых предметов
8 и 9 июля
- можно по желанию пересдать один из предметов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4🔥2👍1
pip install и что происходит, когда вы вводите эту команду 0⃣ Ищет пакет - первым делом он обращается к Python Package Index (PyPI) или другим источникам, которые вы указали.
1⃣ Загружает нужную версию - выбирает подходящий релиз и скачивает его на ваш компьютер.
2⃣ Устанавливает зависимости - если пакет зависит от других библиотек, то pip автоматически их тоже скачает и установит.
3⃣ Распаковывает и устанавливает - файл распаковывается, а код - либо C-расширения - компилируются, либо Python-модуль сразу попадает в ваше окружение (обычно в site-packages).
Все установленные пакеты регистрируются в метаданных - так
pip знает, что у вас есть, и может управлять зависимостями, обновлять или удалять их. Можно указать свой собственный репозиторий или даже установить пакет прямо из Git, архива или локальной папки — для этого есть специальные параметры, такие как --index-url.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4👍2🔥1
📎 Изменения коснутся шести предметов:
▫️Физика -- 41 (в 2025 - 39)
▫️История -- 40 (в 2025 - 36)
▫️Информатика -- 46 (в 2025 - 44)
▫️Иностранный язык -- 40 (в 2025 - 30)
▫️Биология -- 40 (в 2025 - 39)
▫️Химия -- 40 (в 2025 - 39)
Остальные предметы остаются без изменений:
▫️Русский язык -- 40
▫️Математика профиль -- 40
▫️Обществознание -- 45
▫️Литература -- 40
▫️География -- 40
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7❤2🔥1
Автор: М.Шагитов
Уровень: Средний
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из кучи один камень, либо, если в куче 4 или больше камней, он может убрать четыре камня, либо, если количество камней в куче кратно трем, он может уменьшить количество камней в куче в три раза.
Игра завершается в тот момент, когда количество камней в куче становится не более 1.
Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 1 камня или меньше.
В начальный момент в куче было S камней; 4 ≤ S ≤ 100.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
Задание 20.
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Задание 21.
Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Аудио с пояснением к коду решения оставлю в комментариях.
def F(s, n):
if s <= 1:
return n % 2 == 0
if n == 0:
return 0
h = [F(s - 1, n - 1)]
if s >= 4:
h += [F(s - 4, n - 1)]
if s % 3 == 0:
h += [F(s / 3, n - 1)]
return any(h) if (n - 1) % 2 == 0 else all(h)
print([s for s in range(4, 100 + 1) if F(s, 2)])
print([s for s in range(4, 100 + 1) if F(s, 3) and not F(s, 1)])
print([s for s in range(4, 100 + 1) if F(s, 4) and not F(s, 2)])
Ответы:
6
7 10
8
def F(s, n): • Объявление функции F с параметрами s (текущее состояние) и n (количество оставшихся ходов)
if s <= 1: • Проверка, если s меньше или равно 1, игра завершена
return n % 2 == 0 • Возвращает True, если n чётное (победа текущего игрока), иначе False
if n == 0: • Проверка, если ходы закончились (n = 0), игра проиграна
return 0 • Возвращает 0 (ложь), так как нет ходов для победы
h = [F(s - 1, n - 1)] • Рекурсивный вызов F для хода s - 1 и уменьшенного n, результат добавляется в список h
if s >= 4: • Проверка, можно ли сделать ход s - 4
h += [F(s - 4, n - 1)] • Если s >= 4, рекурсивный вызов F для s - 4 и уменьшенного n, результат добавляется в h
if s % 3 == 0: • Проверка, делится ли s на 3
h += [F(s / 3, n - 1)] • Если s делится на 3, рекурсивный вызов F для s / 3 и уменьшенного n, результат добавляется в h
return any(h) if (n - 1) % 2 == 0 else all(h) • Если предыдущий ход был чётным ((n - 1) % 2 == 0), возвращает any(h) (хотя бы один выигрышный ход), иначе all(h) (все ходы должны быть выигрышными)
print([s for s in range(4, 100 + 1) if F(s, 2)]) • Выводит список s от 4 до 100, где игрок может выиграть за 2 хода (F(s, 2) = True)
print([s for s in range(4, 100 + 1) if F(s, 3) and not F(s, 1)]) • Выводит список s от 4 до 100, где игрок может выиграть за 3 хода, но не за 1 (F(s, 3) = True и F(s, 1) = False)
print([s for s in range(4, 100 + 1) if F(s, 4) and not F(s, 2)]) • Выводит список s от 4 до 100, где игрок может выиграть за 4 хода, но не за 2 (F(s, 4) = True и F(s, 2) = False)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3👍1🔥1