This media is not supported in your browser
VIEW IN TELEGRAM
✏️ Полный разбор задачи в Notion
Заметили, что задачи 15 номера с отрезками вызывают сложности у студентов. Однако, РЕШУ ЕГЭ не рекомендует использовать метод перебора для их решения, что является категорически неверным. Мы представляем универсальный вариант решения, который может быть полезен.
В рамках обсуждения также рассмотрим задачу, в которой используется функция
all()
.def F(x, a1, a2):
P = 10 <= x <= 15
Q = 10 <= x <= 20
R = 5 <= x <= 15
A = a1 <= x <= a2
return (A <= P) == (Q <= R)
R = []
M = [x / 4 for x in range(5 * 4, 20 * 4)]
for a1 in M:
for a2 in M:
if all(F(x, a1, a2) for x in M):
R.append(a2 - a1)
print(min(R))
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Задачка 12 номера с сайте Решу ЕГЭ. Интересна она благодаря условию: "После выполнения программы получилась строка, содержащая только двойки".
for n in range(201, 1000):
s = '1' * n
while '111' in s or '222' in s:
s = s.replace('111', '22', 1)
s = s.replace('222', '1', 1)
if len(s) == s.count('2'):
print(n)
break
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
✏️ Полный разбор задачи в Notion
Да 7 номер ЕГЭ принято считать полностью письменной задачей, но мы предлагаем воспользоваться Питоном в качестве калькулятор и решить интересную задачу с Решу ЕГЭ.
I = (16 * 2 ** 23) / 32
I = I - (128 * 2**13)
I = I * 8
i = I / (2048 * 1536)
Colors = 2 ** i
print(f"Цветов использовано в палитре: {Colors}")
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
s = open('24.txt').readline()
s = s.split('U')
mini = 999999
for i in range(len(s)-108):
r = 'U'.join(s[i:i+109])
mini = min(mini, len(r))
print(mini + 2)
Файлы к заданию: 24.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
s = open('24.txt').readline().split('T')
maxi = 0
for i in range(len(s)-100):
r = 'T'.join(s[i:i+101])
maxi = max(maxi, len(r))
print(maxi)
Файлы к заданию: 24.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
down()
опускает перо черепахи, позволяя ей рисовать на экране.import turtle as t
t.down()
t.forward(100)
t.done()
up()
поднимает перо черепахи, останавливая рисование.import turtle as t
t.down()
t.forward(100)
t.up()
t.forward(50)
t.done()
dot(size, color)
рисует точку заданного размера (size) и цвета (color) в текущей позиции черепахи.import turtle as t
t.dot(10, "red")
t.done()
screensize(width, height)
устанавливает размеры экрана в пикселях. Это определяет размер доступной области для рисования.import turtle as t
t.screensize(800, 600)
t.done()
tracer(n, delay)
управляет скоростью отрисовки черепахи. n задает количество шагов отрисовки, а delay - задержку между шагами.import turtle as t
t.tracer(3, 100)
t.done()
done()
ожидает закрытия окна черепахи перед окончанием программы.import turtle as t
t.done()
Эти функции помогают управлять рисованием и настройками экрана при работе с библиотекой Turtle в Python.
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
👏8 8 6
This media is not supported in your browser
VIEW IN TELEGRAM
По заданным IP-адресу узла и маске определите адрес сети.
IP-адрес узла: 129.131.130.64
Маска: 255.255.192.0
Простейшая задача 13 номера с которой стоит начать изучение этих задач. Главная формула:
Адрес сети = Адрес узла & Маска сети
где & - это операция побитовой конъюнкции.
from ipaddress import *
net = ip_network('129.131.130.64/255.255.192.0', 0)
print(net) # 129.131.128.0/18
from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.
net = ip_network('129.131.130.64/255.255.192.0', 0)
Создание объекта сети net с заданным IP-адресом и маской подсети, причем последний аргумент указывает на коррекцию префикса.
print(net)
Вывод объекта сети net.
# 129.131.128.0/18
Комментарий, указывающий на правильность адресации объекта сети: IP-адрес 129.131.128.0 с маской /18.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Для узла с IP-адресом 224.128.112.142 адрес сети равен 224.128.96.0.
Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Маска сети имеет длину 32 бита и вид 1111..000 (сначала единицы, потом нули). Поэтому мы можем перебрать ее значения через for mask in range(32+1):
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'224.128.112.142/{mask}', 0)
if str(net) == f'224.128.96.0/{mask}':
print(str(net.netmask).split('.')[2])
from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.
Цикл for mask in range(32+1):
Для перебора возможных значений маски сети от 0 до 32 (включительно).
net = ip_network(f'224.128.112.142/{mask}', 0)
Создание объекта сети net с заданным IP-адресом и переменной маской подсети, где последний аргумент указывает на коррекцию префикса.
if str(net) == f'224.128.96.0/{mask}':
Условие проверки соответствия адреса сети определенному значению.
print(str(net.netmask).split('.')[2])
Вывод третьего октета маски подсети из объекта сети net, если условие выполнено.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Базовый
Значение выражения 4**34 + 5 * 4**22 + 4**13 + 2 * 4**9 + 82 записали в системе счисления с основанием 16. Сколько разных цифр встречается в этой записи?
Функция hex() является встроенной функцией в Python, которая используется для преобразования целого числа в строку, содержащую его шестнадцатеричное представление.
print(len(set(hex(4**34 + 5*4**22 + 4**13 + 2*4**9 + 82)[2:])))
x = 4**34 + 5*4**22 + 4**13 + 2*4**9 + 82
s = []
while x > 0:
s.append(x % 16)
x //= 16
print(len(set(s)))
# Ответ: 6
x = 4**34 + 5*4**22 + 4**13 + 2*4**9 + 82
В этой строке расчитывается значение переменной x с помощью сложных математических операций.
s = []
Создается пустой список s, который будет использоваться для хранения результатов вычислений.
while x > 0:
Запускается цикл while, который будет выполняться до тех пор, пока переменная x больше нуля.
s.append(x % 16)
Добавляется остаток от деления переменной x на 16 в список s. Это делается для перевода числа в шестнадцатеричную систему счисления.
x //= 16
Значение переменной x делится на 16 с использованием целочисленного деления, чтобы продолжить процесс перевода числа в шестнадцатеричную систему.
print(len(set(s)))
Выводится длина множества уникальных значений списка s, что позволяет определить количество различных цифр, используемых в представлении числа x в шестнадцатеричной системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Базовый
Операнды арифметического выражения записаны в системах счисления с основаниями 13 и 18:
8x78y_13 + 79xy7_18
Определите значения x и y, при которых значение данного выражения будет наименьшим и кратно 9. Для найденных значений x и y вычислите частное от деления.
Строчку alphbet можно записать иначе:
from string import *
alphabet = digits + ascii_uppercase
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
R = []
for x in alphabet[:13]:
for y in alphabet[:13]:
A = int(f'8{x}78{y}', 13)
B = int(f'79{x}{y}7', 18)
if (A + B) % 9 == 0:
R.append((A + B) // 9)
print(min(R))
# Ответ: 113024
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создается отсортированный список alphabet, содержащий цифры от 0 до 9 и буквы английского алфавита в верхнем регистре.
R = []
Создается пустой список R, в который будут добавляться результаты, удовлетворяющие условию задачи.
for x in alphabet[:13]:
Запускается цикл for, перебирающий элементы alphabet до 13-го (не включительно) и присваивающий их переменной x.
for y in alphabet[:13]:
Запускается вложенный цикл for, перебирающий элементы alphabet до 13-го (не включительно) и присваивающий их переменной y.
A = int(f'8{x}78{y}', 13)
Формируется число A, которое получается из конкатенации строк, представляющих числа в строке, и преобразуется в десятичное число по основанию 13.
B = int(f'79{x}{y}7', 18)
Формируется число B, которое получается аналогично число A, но преобразуется в десятичное число по основанию 18.
if (A + B) % 9 == 0:
Проверяется условие, что сумма чисел A и B делится на 9 без остатка.
R.append((A + B) // 9)
Если условие выполняется, результат деления суммы A и B на 9 добавляется в список R.
print(min(R))
Выводится минимальное значение из списка R, которое является ответом на задачу.
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Базовый
Все четырёхбуквенные слова, составленные из букв А, Л, Г, О, Р, И, Т, М, записаны в алфавитном порядке и пронумерованы, начиная с 1.
Начало списка выглядит так:
1. АААА
2. АААГ
3. АААИ
4. АААЛ
Под каким номером в списке идёт первое слово, которое начинается с букв ИГ?
Функция sorted() позволяет легко получить алфавитный порядок. А оператор break позволяет остановиться на первом слове.
from itertools import product
k = 0
for s in product(sorted('АЛГОРИТМ'), repeat=4):
word = ''.join(s)
k += 1
if word[:2] == 'ИГ':
print(k)
break
from itertools import product
Импортируется функция product из модуля itertools, которая генерирует декартово произведение итерабельных объектов.
k = 0
Инициализируется переменная k, которая будет использоваться для отслеживания количества итераций.
for s in product(sorted('АЛГОРИТМ'), repeat=4):
Запускается цикл for, в котором производится комбинация символов из отсортированной строки 'АЛГОРИТМ' с повторением в 4 раза.
word = ''.join(s)
Создается строка word, объединяя символы из текущей комбинации s.
k += 1
Увеличивается счетчик k на 1 для подсчета количества итераций.
if word[:2] == 'ИГ':
Проверяется, начинается ли текущее слово word с символов 'ИГ'.
print(k)
Если условие выполняется, то выводится значение счетчика k.
break
Происходит прерывание цикла после печати значения счетчика для первого слова, начинающегося с 'ИГ'.
s = sorted('АЛГОРИТМ')
k = 0
for a in s:
for b in s:
for c in s:
for d in s:
word = a + b + c + d
k += 1
if word[:2] == 'ИГ':
print(k)
exit()
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Средний
Задач из ОГЭ, 5 номер, но считаю её весьма полезной, так как это усложненная вариация 23 номера ЕГЭ.
1. раздели на 2
2. вычти 1
Составьте алгоритм получения из чиcла 65 числа 4, содержащий не более 5 команд. В ответе запишите только номера команд.
Аудио с пояснением к коду решения оставлю в комментариях.
def F(a, b, t):
if a < b or len(t) > 5:
return 0
elif a == b and len(t) <= 5:
print(t)
return 1
else:
return F(a / 2, b, t+'1') + F(a-1, b, t+'2')
F(65, 4, '')
# Ответ: 21111
def F(a, b, t):
Определение функции F с тремя параметрами a, b, и t.
if a < b or len(t) > 5:
Проверка условия: если a меньше b или длина строки t превышает 5 символов.
return 0
Возврат значения 0, если условие из пункта 2 истинно.
elif a == b and len(t) <= 5:
Другое условие: если a равно b и длина строки t не превышает 5 символов.
print(t)
Вывод текущего состояния строки t.
return 1
Возврат значения 1, если условие из пункта 4 истинно.
else:
В случае, если ни одно из вышеперечисленных условий не выполнено.
return F(a / 2, b, t+'1') + F(a-1, b, t+'2')
Рекурсивный вызов функции F с различными значениями аргументов: для первого вызова a уменьшается вдвое и к строке t добавляется символ '1', для второго вызова a уменьшается на 1, к строке t добавляется символ '2'.
F(65, 4, '')
Вызов функции F с начальными значениями a=65, b=4, и пустой строкой t.
Поддержать автора: boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
Пару слов об авторе канала, давайте знакомиться!
#kege #yandex
#reshu #statgrad
#polyakov
Информатика ЕГЭ | itpy
Программирование на Python | itpy
Информатика ОГЭ | itpy
Hey Student!
Please open Telegram to view this post
VIEW IN TELEGRAM
4 5 5 4❤2
У нас уже собралась неплохая такая подборка 8 номеров, сохраняем и пользуемся! #ЕГЭ8 #useful
🚩 Разбор номера 17671 #kege по информатике #ЕГЭ8
Автор: Пересдача 04.07.2024
Уровень: Базовый
🚩 Разбор номера 17627 #kege по информатике #ЕГЭ8
Автор: Резервный день 19.06.2024
Уровень: Базовый
🚩 Разбор номера 5626 #kege по информатике #ЕГЭ8
🚩 Разбор номера 8417 #kege по информатике #ЕГЭ8
🚩 Разбор номера 15947 #reshu по информатике #ЕГЭ8
Уровень: Базовый
🚩 Разбор номера 4199 #polyakov по информатике #ЕГЭ8
Уровень: Сложный
🚩 Разбор номера 12917 #kege по информатике #ЕГЭ8
Автор: PRO100ЕГЭ
Уровень: Базовый
🚩 Разбор номера из нового варианта #statgrad по информатике #ЕГЭ8
Автор: Статград
Уровень: Базовый
🚩 Разбор номера 11827 #kege по информатике #ЕГЭ8
Автор: (Л. Шастин)
Уровень: Средний
🚩 Разбор номера 10090 #kege по информатике #ЕГЭ8
Уровень: Базовый
🚩 Разбор номера 12240 #kege по информатике #ЕГЭ8
Уровень: Базовый
🚩 Разбор номера 11827 #kege по информатике #ЕГЭ8
Автор: (Л. Шастин)
Уровень: Средний
🚩 Разбор номера 17521 #kege по информатике #ЕГЭ8
Автор: Основная волна 07.06.24
Уровень: Базовый
🚩 Разбор номера 17862 #kege по информатике #ЕГЭ8
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy🧑💻
Поддержать автора донатом💵
Автор: Пересдача 04.07.2024
Уровень: Базовый
Автор: Резервный день 19.06.2024
Уровень: Базовый
Уровень: Базовый
Уровень: Сложный
Автор: PRO100ЕГЭ
Уровень: Базовый
Автор: Статград
Уровень: Базовый
Автор: (Л. Шастин)
Уровень: Средний
Уровень: Базовый
Уровень: Базовый
Автор: (Л. Шастин)
Уровень: Средний
Автор: Основная волна 07.06.24
Уровень: Базовый
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка по 9 номерам уже тоже очень даже, пользуйтесь! #ЕГЭ9 #useful
🚩 Разбор номера 5664 #kege по информатике #ЕГЭ9
🚩 Разбор номера 63025 #reshu по информатике #ЕГЭ9
🚩 Разбор номера 8554 #kege по информатике #ЕГЭ9
🚩 Разбор номера #kege по информатике #ЕГЭ9
Автор: ЕГКР 27.04
Уровень: Базовый
🚩 Разбор номера 17863 #kege по информатике #ЕГЭ9
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy🧑💻
Поддержать автора донатом💵
Автор: ЕГКР 27.04
Уровень: Базовый
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
2 5 4 3
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: РЕШУ ЕГЭ
Уровень: Базовый
Сколько слов длины 5, начинающихся с гласной буквы, можно составить из букв Е, Г, Э? Каждая буква может входить в слово несколько раз.
Крайне интересная задача, так как позволяет представить вот такое простое и эстетичное решение. Стандартное решение я постараюсь приложить в комментариях к этому посту.
from itertools import product
print([slovo[0] in 'ЕЭ' for slovo in product('ЕГЭ', repeat=5)].count(True))
# Ответ: 162
from itertools import product
Импортируем функцию product из модуля itertools, которая позволяет генерировать декартово произведение итераторов.
print([slovo[0] in 'ЕЭ' for slovo in product('ЕГЭ', repeat=5)]
В генераторе мы пробегаем все получившиеся слова через функцию product и если первый элемент слова является буквами Е или Э, то в список будет падать bool значение True.
.count(True))
Считаем количество истинных значений (True) в полученном списке и выводим это значение на экран.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
3 6 4 4
Автор: Статград
Уровень: Сложный
Уровень: Базовый
Автор: ЕГКР 27.04.24
Уровень: Базовый
Автор: Апробация 17.05
Уровень: Базовый
1. Домашка, задачи базового уровня (ФИПИ)
2. Практика, задачи повышенной сложности
Информатика ЕГЭ | itpy
Кстати у нас есть чатик
Please open Telegram to view this post
VIEW IN TELEGRAM
4 8 5 4 2
Наша подборка Stepik задач №14 для подготовки
1. Домашка, задачи базового уровня (ФИПИ)
2. Практика, задачи повышенной сложности
Уровень: Базовый
Автор задачи: (М. Попков)
Уровень: Средний
Автор задачи: (А. Игнатюк)
Уровень: Сложный
Уровень: Средний
Автор: Статград
Уровень: Средний
Автор: Е.Джобс
Уровень: Базовый
Автор: Л. Шастин
Уровень: Базовый
Автор: Демоверсия 2025
Уровень: Базовый
Автор: Демоверсия 2025
Уровень: Базовый
Информатика ЕГЭ | itpy
Кстати у нас есть чатик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6❤🔥5🔥2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Решу ЕГЭ
Уровень: Базовый
Определите максимальное количество идущих подряд пар символов AB или CB в прилагаемом файле.
Искомая подпоследовательность должна состоять только из пар AB, или только из пар CB, или только из пар AB и CB в произвольном порядке следования этих пар.
Этот номер очень удобно решается через замену всех "лишних" элементов.
s = open('files/24.txt').readline()
s = s.replace('AB', '*').replace('CB', '+')
for x in 'ABC':
s = s.replace(x, ' ')
print(max([len(x) for x in s.split()]))
print(len(max(s.split(), key=len)))
# Ответ: 65
s = open('files/24.txt').readline()
- Открывает файл с именем 'files/24.txt' и читает первую строку из этого файла, затем сохраняет её в переменную s.
s = s.replace('AB', '*').replace('CB', '+')
- Заменяет все вхождения 'AB' в строке Услона символ '*', затем заменяет все вхождения 'CB' на символ '+'.
for x in 'ABC':
- Инициализирует цикл, который будет последовательно проходить через каждую букву в строке 'ABC'.
s = s.replace(x, ' ')
- Для каждой буквы x в строке 'ABC', заменяет все её вхождения в строкеЭ24
Ана пробелы.
print(max([len(x) for x in s.split()]))
- Разделяет строку s на части (слова), используя пробелы как разделители, затем вычисляет длину каждой части и выводит максимальную из них.
print(len(max(s.split(), key=len)))
- Так же, как предыдущая строка, разделяет строку s на части (слова), используя пробелы в качестве разделителей, и затем находит и выводит длину самой длинной части в строке.
Наша Stepik подборкой задач
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11🔥4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Решу ЕГЭ
Уровень: Базовый
Все 5-буквенные слова, составленные из букв Б, К, Ф, Ц, записаны
в алфавитном порядке и пронумерованы. Вот начало списка:
1. БББББ
2. ББББК
3. ББББФ
4. ББББЦ
5. БББКБ
Запишите слово, которое стоит на 486-м месте от начала списка.
Разберем задачу 3 разными способами и каждый выберет, тот способ,который ему понравился.
s = sorted('БКФЦ')
print(s) # ['Б', 'К', 'Ф', 'Ц']
n = 0
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
slovo = a + b + c + d + e
n += 1
if n == 486:
print(n, slovo)
s = sorted('БКФЦ')
s,
содержащий отсортированные символы строки 'БКФЦ'.
print(s) # ['Б', 'К', 'Ф', 'Ц']
s
для проверки.n = 0
n,
который будем использовать для подсчета количества сгенерированных слов.for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
s.
Каждый цикл отвечает за одну позицию в слове.slovo = a + b + c + d + e
slovo
путем объединения символов a, b, c, d, e.
n += 1
n
увеличивается на 1 для каждой новой комбинации.if n == 486:
print(n, slovo)
n
достигает значения 486, выводится номер комбинации и само слово.from itertools import *
n = 0
for p in product(sorted('БКФЦ'), repeat=5):
slovo = ''.join(p)
n += 1
if n == 486:
print(n, slovo)
from itertools import *
itertools,
который предоставляет функции для работы с комбинациями.n = 0
n
для подсчета количества сгенерированных слов.for p in product(sorted('БКФЦ'), repeat=5):
product,
которая генерирует все возможные комбинации из символов 'Б', 'К', 'Ф', 'Ц'
с длиной 5 .slovo = ''.join(p)
p
преобразуется в строку slovo
с помощью метода join.
n += 1
n
увеличивается на 1 для каждой новой комбинации.if n == 486:
print(n, slovo)
n
достигает значения 486, выводится номер комбинации и само слово.from itertools import *
for n, p in enumerate(product(sorted('БКФЦ'), repeat=5), 1):
slovo = ''.join(p)
if n == 486:
print(n, slovo)
from itertools import *
itertools.
for n, p in enumerate(product(sorted('БКФЦ'), repeat=5), 1):
enumerate,
которая добавляет счетчик n
к каждому элементу, генерируемому функцией product.
Счетчик начинается с 1.slovo = ''.join(p)
p
преобразуется в строку slovo
с помощью метода join.
if n == 486:
print(n, slovo)
n
достигает значения 486, выводится номер комбинации и само слово.Второй канал про теорию Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8 4❤3🔥2