Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:
for M in open('9.txt'):
M = [int(i) for i in M.split()]
print(M)
M = [int(i) for i in open('17.txt')]
print(M)
s = open('24.txt').readline()
Считываем только первую строку файла.
ans = []
for M in open('26.txt'):
M = [int(i) for i in M.split()]
ans.append(M)
Сохраняем каждую строку как список чисел, а потом собираем всё в общий список.
f = open('27.А.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍6❤4🔥4❤🔥2
Автор: Яндекс учебник
Уровень: Средний
Определите количество строк таблицы, содержащих числа, для которых выполнены все условия:
1. Четыре числа строки можно разбить на две пары чисел с равными суммами
2. Максимальное число строки меньше суммы трёх оставшихся чисел сумма чисел в строке чётна
from itertools import permutations
cnt = 0
for s in open('0. files/9.csv'):
M = [int(x) for x in s.split(';')]
if sum(M) % 2 == 0:
if max(M) < sum(M) - max(M):
if any(p[0] + p[1] == p[2] + p[3] for p in permutations(M)):
cnt += 1
print(cnt)
Ответ: 139
· Импортируем функцию permutations для генерации всех перестановок
· Создаем счетчик и инициализируем его нулем
· Открываем файл '9.csv' и построчно читаем его
· Разбиваем строку по символу ';' и преобразуем каждый элемент в целое число
· Проверяем, что сумма всех чисел в строке четная
· Проверяем, что максимальное число меньше суммы всех остальных чисел
· Проверяем, существует ли такая перестановка 4 чисел, где сумма первых двух равна сумме последних двух
· Если все три условия выполнены, увеличиваем счетчик на 1
· Выводим итоговое количество строк, удовлетворяющих всем условиям
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥3
📎 list - это изменяемый упорядоченный список. Можно добавлять, удалять, менять элементы. Например:
fruits = ['яблоко', 'банан', 'апельсин']📎 📎 tuple - неизменяемая последовательность. Отлично подходит, когда нужно зафиксировать набор данных:
coordinates = (10, 20)📎 📎 set - множество уникальных элементов. Быстро искать, удалять дубликаты:
unique_numbers = {1, 2, 3}📎 📎 dict - словарь, отображение ключей на значения. Очень удобно для хранения пар "ключ-значение":
person = {'имя': 'Анна', 'возраст': 25}📎 ❄️ frozenset - неизменяемое множество, его нельзя менять после создания. Используется там, где нужен "жёсткий" набор данных. frozenset([1, 2, 3, 4])➡️ frozenset({1, 2, 3, 4})🔼 🔽 deque - двусторонняя очередь из модуля collections. Быстро добавлять и удалять элементы с обоих концов:
from collections import deque⚙️ d = deque() - инициализировать элементами из любого итерируемого объекта (список, кортеж и т. д.).
Технологии телеграмма не стоят на месте, поэтому обращаю ваше внимание, что мы часто используем инструмент "цитата". Кликайте на цитату выше, чтобы открыть текст для чтения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5❤🔥4🔥3
Автор: О. Лысенков
Уровень: Средний
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится восьмеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если восьмеричная запись начинается на 5, то все двойки в записи меняются на единицы, а все единицы меняются на двойки после к числу приписывается 11 слева;
б) если восьмеричная запись начинается не на 5, то к записи справа приписывается 10, а первый разряд полученной записи заменяется на 2.
Укажите максимальное число N, для которого результатом работы алгоритма является наибольшее число R, меньшее 1354.
L = []
for n in range(1, 10000):
s = f'{n:o}' # s = oct(n)[2:]
if s[0] == '5':
s = s.replace('2', '*')
s = s.replace('1', '2')
s = s.replace('*', '1')
s = '11' + s
else:
s = s + '10'
s = '2' + s[1:] # а первый разряд полученной записи заменяется на 2.
r = int(s, 8)
if r < 1354:
L.append((r, n))
print(max(L))
Ответ: 61
· Создаем пустой список для хранения пар (результат, исходное число)
· Перебираем числа n от 1 до 9999
· Преобразуем число n в восьмеричную систему счисления (без префикса '0o')
· Проверяем, начинается ли восьмеричная запись с цифры 5
· Временно заменяем все цифры 2 на символ '*' (чтобы избежать конфликта при следующих заменах)
· Заменяем все цифры 1 на 2
· Заменяем временные символы '*' обратно на 1 (фактически меняем местами 1 и 2)
· Добавляем в начало строки две единицы '11'
· Если восьмеричная запись НЕ начинается с 5
· Добавляем в конец строки '10'
· Заменяем первую цифру полученной строки на 2
· Преобразуем полученную строку s обратно в десятичное число, интерпретируя ее как восьмеричную
· Проверяем, что результат r меньше 1354
· Добавляем в список пару (результат r, исходное число n)
· Находим и выводим максимальную пару в списке (сравнение происходит сначала по r, затем по n)
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥4❤4🔥2
zip()
в Python? #tpyОна берет по одному элементу из каждого итерируемого объекта и создает кортеж из них.
names = ['Анна', 'Борис']
scores = [85, 90]
result = list(zip(names, scores))
print(result)
[('Анна', 85), ('Борис', 90)]
- Можно объединять любое количество итерируемых объектов.
- Если длины объектов отличаются,
zip()
остановится на минимальной длине.- параллельной обработки списков,
- создания словарей,
- объединения данных и многого другого.
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥3 3🔥2
Автор: Основная волна 11.06.25
Уровень: Средний
Пусть М - сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа.
Напишите программу, которая перебирает целые числа, большие 5 400 000, в порядке возрастания и ищет среди них такие, для которых М больше 60 000 и является палиндромом, т.е. одинаково читается слева направо и справа налево.
В ответе запишите в первом столбце
таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце - соответствующие им значения М.
def prime(x):
if x <= 1:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
def d(x):
a=[]
for i in range(2, int(x**0.5)+1):
if x%i==0:
a+=[i, x//i]
return sorted(set(a))
k=0
for i in range(5400001, 10**10):
a=[j for j in d(i) if prime(j) == True]
if len(a)>0:
M=min(a)+max(a)
if M>60000:
if str(M)[::-1] == str(M):
print(i, M)
k += 1
if k==5:
break
Ответ:
5400042 900009
5400420 90009
5400866 158851
5406116 1351531
5406420 90109
· Объявление функции для проверки, является ли число простым
· Проверяем, если число меньше или равно 1
· Числа ≤ 1 не являются простыми
· Перебираем возможные делители от 2 до квадратного корня из x
· Проверяем, делится ли x на i без остатка
· Если нашли делитель, число не простое
· Если делителей не найдено, число простое
· Объявление функции для нахождения всех делителей числа x
· Создаем пустой список для делителей
· Перебираем числа от 2 до квадратного корня из x
· Проверяем, является ли i делителем x
· Добавляем в список сам делитель i и парный ему делитель x//i
· Возвращаем отсортированный список уникальных делителей
· Счетчик найденных чисел
· Бесконечный цикл начиная с 5 400 001
· Создаем список простых делителей числа i
· Проверяем, что есть хотя бы один простой делитель
· Вычисляем M как сумму минимального и максимального простого делителя
· Проверяем, что M больше 60 000
· Проверяем, является ли M палиндромом (читается одинаково в обе стороны)
· Выводим число i и значение M
· Увеличиваем счетчик найденных чисел
· Проверяем, найдено ли уже 5 чисел
· Прерываем цикл после нахождения 5 подходящих чисел
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6🔥3❤2👍1
Python
можно посчитать Евклидово расстояние между двумя точками всего в одну строку?) #tpydist
, которая входит в стандартную библиотеку math
.В контексте 27 задачи ЕГЭ, особенно полезная вещь!!)
import math
point1 = (x1, y1)
point2 = (x2, y2)
distance = math.dist(point1, point2)
print(distance)
- Простая и удобная в использовании.
- Работает для точек в 2D, 3D и более измерениях.
⚠️ math.dist() доступна только в Python 3.8 и новее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤🔥3🔥2
Автор: Яндекс учебник
Уровень: Базовый
Значение арифметического выражения
625**90 + 125**120 − 5*25
записали в системе счисления с основанием 25.
Для найденного выражения вычислите сумму его чётных цифр.
alp = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
def convert(n, b):
r = ''
while n > 0:
r = alp[n % b] + r
n //= b
return r
n = 625**90+125**120 - 5*25
s = convert(n, 25)
print(sum([int(x, 25) for x in s if x in alp[0::2]]))
Ответ: 4292
· Создаем отсортированный список символов для систем счисления (цифры 0-9 и буквы A-Z)
· Объявление функции convert для перевода числа n в систему счисления с основанием b
· Создаем пустую строку для хранения результата
· Цикл выполняется, пока число n больше 0
· Берем остаток от деления n на b, находим соответствующий символ в alp и добавляем его в начало строки
· Делим n на b нацело (убираем обработанный разряд)
· Возвращаем полученную строку - число в системе счисления с основанием b
· Вычисляем большое число n по заданной формуле
· Переводим число n в 25-ричную систему счисления
· alp[0::2] выбирает только символы с четными индексами (0, 2, 4, ...)
· Для каждого символа в строке s, если он есть в alp[0::2], преобразуем его обратно в число
· Суммируем все такие числа и выводим результат
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2
- переменные, операторы, функции, базовые типы данных
- арифметика, логика, побитовые операции, приведение типов
-
if
, elif
, else
, вложенные условия, тернарный оператор-
for
, while
, вложенные циклы, break
, continue
, pass
, else
- операции, методы, форматирование (
f'
-строки, format()
, %
), срезы- методы, вложенные списки, особенности кортежей
- отличия от списков, методы, практика
- объявление, вызов,
return
- чтение, запись, практика
-
map()
, filter()
, zip()
, enumerate()
-
itertools
, math
, random
, ipaddress
, fnmatch
и др.- Обработка исключений, декораторы, алгоритмы (DBSCAN, K-means, Евклид), lambda-функции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4❤2🔥2
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❤🔥2🔥2
range(10**9)
почти не занимает памяти? #tpyrange()
хранит только начальное, конечное значения и шаг. Он не создает список всех чисел сразу, а генерирует числа по мере необходимости!
range(10**9)
в памяти хранится лишь небольшая информация: - старт (по умолчанию 0)
- финиш (10^9)
- шаг (по умолчанию 1)
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤8👍2🔥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
❤🔥5🔥1
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🔥1
Автор: Основная волна 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
❤3🫡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👍1🔥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
❤4👍1🔥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👍1🔥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👍1🔥1