Информатика | Илья Андрианов | itpy 🧑‍💻
1.03K subscribers
264 photos
20 videos
19 files
630 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
📱Комментирую код решения задачи:

0:06 - Про диапазон range

0:22 - Про рассматриваемые пары
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Один из подписчиков спросил меня, стоит ли решать авторские варианты, если до экзамена осталось немного времени. Мой ответ: конечно, стоит, но выборочно! Я настоятельно рекомендую всем, кто планирует набрать более 80 баллов, порешать крайний вариант от Лёни Шастина на сайте kompege.ru #useful

Ссылка на вариант: Шастин вариант 6⃣

Так же оставлю тут ссылку на полный разбор от автора: ссылка на YouTube 📱

Особенно хочется отметить номера:
🚩 - забавное условие с "поменять местами элементы"
🚩 - ситуация с фигурами может запутать
🚩 - лайтовый, но просто кайфовый прототип
🚩 - чётность всех соседних различна
🚩🚩 - интересное условие с пропущенным числом в маске
🚩🚩 - интересная задача с p-ой системой счисления
🚩🚩 - проверить сумму цифр строки у элементов тройки
🚩🚩 - классная задача с угловыми клетками
🚩🚩 - хардовый уровень на подумать


Информатика ЕГЭ | itpy 👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1166
👋 Доброе утро, друзья! Меня заинтересовал вопрос о том, кто составляет нашу аудиторию на канале. Проведение опроса поможет лучше понять наших подписчиков, их интересы и потребности. Буду признателен, если вы уделите время на прохождение опроса 🤗
Anonymous Poll
2%
Я учусь в школе < 9 класса
2%
Учусь в 9 классе
14%
Учусь в 10 классе
59%
Учусь в 11 классе
8%
Студент 1-4 курс
9%
Репетитор/Педагог
2%
Родитель
4%
Просто неравнодушный
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 5091 #polyakov по информатике #ЕГЭ23
Автор: А. Брейк
Уровень:
Сложный

🚩 Условие задачи:
1. Вычесть 1
2. Вычесть 2
3. Извлечь корень

Третья команда — извлекает из числа квадратный корень, если число является квадратом любого числа.

Сколько различных результатов можно получить из числа 113 в ходе программы, содержащей 17 команд?


🚩 Теоретическая справка:
Обратите внимание, что просят найти кол-во команд!


👩‍💻 Код решения:
from functools import *
my_set = set()

@lru_cache(None)
def F(x, c):
if c == 17:
my_set.add(x)
return 0
if x > 0:
if round(x**0.5) == x**0.5:
return F(x - 1, c + 1) + F(x - 2, c + 1) + F(x ** 0.5, c + 1)
return F(x-1, c+1) + F(x-2, c+1)


F(113, 0)
print(len(my_set))

# Ответ: 6537515


👩‍💻 Комментарии к коду:

1⃣ from functools import *
Импорт всех функций из модуля.


2⃣ my_set = set()
Создание пустого множества my_set, которое будет использоваться для хранения уникальных значений.


3⃣ @lru_cache(None)
Декоратор для кеширования результатов выполнения функции. None означает, что будет использоваться неограниченный кеш.


4⃣ def F(x, c):
Объявление функции F, которая принимает два аргумента: x и c.


5⃣ if c == 17:
Проверка условия: если c равно 17.


6⃣ my_set.add(x)
Добавление значения x в множество my_set.


7⃣ return 0
Конец выполнения функции для определенного значения c.


8⃣ if x > 0:
Проверка условия: если x больше нуля.


0⃣ if round(x**0.5) == x**0.5:
Проверка условия: если квадратный корень числа x является целым числом.


🔟 return F(x - 1, c + 1) + F(x - 2, c + 1) + F(x ** 0.5, c + 1)
Рекурсивный вызов функции с различными параметрами в зависимости от условий.


1⃣1⃣ return F(x-1, c+1) + F(x-2, c+1)
Рекурсивный вызов функции F с измененными параметрами.

1⃣2⃣ F(113, 0)
Вызов функции F с начальными значениями.


1⃣3⃣ print(len(my_set))
Вывод количества уникальных элементов в множестве.


Аудио мини-комментарий к коду решения оставлю в комментариях 👇👇👇

#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
9643
Шпаргалка для 🚩 номера #useful

Как пользоваться встроенной функцией ВПР (VLOOKUP) в Excel. Очень полезная функция, так как она пригодится и в 22 номере ☝️

Информатика ЕГЭ | itpy
👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1487
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 11791 #kege по информатике #ЕГЭ13
Автор: М. Ишимов
Уровень: Средний


🚩 Условие задачи:
Сеть, в которой содержится узел с IP-адресом 246.51.128.202, задана маской сети 255.255.A.0, где A - некоторое допустимое для записи маски число.

Определите минимальное значение A, для которого для всех IP-адресов этой сети в двоичной записи IP-адреса количество нулей в левых двух байтах не более количества нулей в правых двух байтах.


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
from ipaddress import *
for A in [0, 128, 192, 224, 240, 248, 252, 254, 255]:
net = ip_network(f'246.51.128.202/255.255.{A}.0', 0)
if all(f'{ip:b}'[:16].count('0') <= f'{ip:b}'[16:].count('0') for ip in net):
print(A)
break

# Ответ: 254


👩‍💻 Комментарии к коду:

1⃣ from ipaddress import *
Импортируются все функции из модуля ipaddress.


2⃣ for A in [0, 128, 192, 224, 240, 248, 252, 254, 255]:
Цикл for перебирает значения из списка [0, 128, 192, 224, 240, 248, 252, 254, 255], присваивая каждое значение переменной A.


3⃣ net = ip_network(f'246.51.128.202/255.255.{A}.0', 0)
Создается объект net, представляющий сеть IPv4 с помощью вызова функции ip_network. IP-адрес задается как 246.51.128.202, маска подсети формируется с помощью строки 255.255.{A}.0.


4⃣ if all(f'{ip:b}'[:16].count('0') <= f'{ip:b}'[16:].count('0') for ip in net):
Выполняется условие, в котором проверяется, что для каждого IP-адреса в сети net количество битов, равных 0, в первых 16 битах меньше или равно количеству битов, равных 0, в оставшихся битах.


5⃣ print(A)
Если условие выполняется, то выводится значение переменной A.


6⃣ break
Выполняется прерывание цикла, так что после вывода значения переменной A программа завершает выполнение.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
7551
Как вам организация апробации?)

Уже были жалобы от студентов на неисправные компьютеры, неработающие мыши и отсутствие интерпретатора в PyCharm 🙆‍♂️
159731
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Сохраняй шпаргалку по встроенным функциям в Python #tpy

Данные функции встречаются при решении практически каждого (пайтон) номера ЕГЭ, но особенно будут полезны для номеров: 9 и 17.

Информатика ЕГЭ | itpy 👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1165
Апробация1 15.05.pdf
17.4 MB
На канале @infkege Марат и Лёня уже собрали вариант с сегодняшней апробации, сходства есть, это подтвердили некоторые мои подписчики. #useful

Ответы прикреплю в комментариях к этому посту 👇

Информатика ЕГЭ | itpy 👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
6
This media is not supported in your browser
VIEW IN TELEGRAM
12441
❗️ У кого возникли проблемы с интерпретатором Python 👩‍💻 в PyCharm 👩‍💻 на апробации, гайд как избежать этого на экзамене #useful ☝️
Please open Telegram to view this post
VIEW IN TELEGRAM
733
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера #kege по информатике #ЕГЭ9
Автор: ЕГКР 27.04
Уровень: Базовый


🚩 Условие задачи:
Определите количество строк таблицы, для чисел которых выполнены оба условия:
- в строке есть ровно одно число, которое повторяется дважды, и пять чисел без повторений;
- произведение трёх наименьших среди неповторяющихся чисел строки больше квадрата повторяющегося числа.


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
from math import prod
cnt = 0
for s in open('9.txt'):
M = [int(x) for x in s.split()]
copied = [x for x in M if M.count(x) == 2]
not_copied = [x for x in M if M.count(x) == 1]
if len(copied) == 2 and len(not_copied) == 5:
if prod(sorted(not_copied)[:3]) > prod(copied):
cnt += 1
print(cnt)

# Ответ: 1671305


👩‍💻 Комментарии к коду:

1⃣ from math import prod
Импорт функции prod из модуля math, которая вычисляет произведение элементов итерируемого объекта.


2⃣ cnt = 0
Инициализация переменной cnt для подсчета количества выполненных условий.


3⃣ for s in open('9.txt'):
Цикл for, который проходит по каждой строке из файла "9.txt".


4⃣ M = [int(x) for x in s.split()]
Создание списка M, содержащего целочисленные значения, полученные разделением строки s.


5⃣ copied = [x for x in M if M.count(x) == 2]
Фильтрация списка M, чтобы получить только элементы, которые встречаются дважды.


6⃣ not_copied = [x for x in M if M.count(x) == 1]
Фильтрация списка M, чтобы получить только элементы, которые встречаются один раз.


7⃣ if len(copied) == 2 and len(not_copied) == 5:
Проверка условия: если в списке copied содержится два элемента, а в списке not_copied пять элементов.


8⃣ if prod(sorted(not_copied)[:3]) > prod(copied):
Проверка условия: произведение трех наименьших элементов из отсортированного списка not_copied больше произведения элементов из списка copied.


0⃣ cnt += 1
Увеличение счетчика cnt на 1, если выполнены все условия.


🔟 print(cnt)
Вывод результата.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
932
👩‍💻 Сохраняй табличку по таблицам истинности, чтобы не путать конъюнкцию и дизъюнкцию #tpy

Информатика ЕГЭ | itpy 👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
9753
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 16383 #kege по информатике #ЕГЭ17
Автор: ЕГКР 27.04
Уровень: Базовый


🚩 Условие задачи:
Определите количество пар элементов последовательности, в которых только один из двух элементов оканчивается на 21 и является пятизначным числом, а сумма квадратов элементов пары не меньше квадрата максимального элемента последовательности, оканчивающегося на 21 и являющегося пятизначным числом.


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
M = [int(x) for x in open('17.txt')]
D = [int(x) for x in M if str(x)[-2:] == '21' and len(str(abs(x)))==5 ]
R = []
for i in range(len(M)-1):
x, y = M[i], M[i+1]
if (x in D and y not in D) or (y in D and x not in D):
if (x**2)+(y**2) >= max(D)**2:
R.append(x + y)
print(len(R), max(R))

# Ответ: 6283 9627


👩‍💻 Комментарии к коду:

1⃣ M = [int(x) for x in open('17.txt')]
Создание списка M, содержащего целочисленные значения, полученные из файла '17.txt'.


2⃣ D = [int(x) for x in M if str(x)[-2:] == '21' and len(str(abs(x)))==5]
Фильтрация списка M, чтобы получить только элементы, оканчивающиеся на '21' и имеющие длину равную 5 символам.


3⃣ R = []
Инициализация пустого списка R для хранения результатов.


4⃣ for i in range(len(M)-1):
Цикл for, который проходит по индексам элементов списка M за исключением последнего.


5⃣ x, y = M[i], M[i+1]

Присваивание переменным x и y значений пар элементов списка M.


6⃣ if (x in D and y not in D) or (y in D and x not in D):
Проверка условия: если один элемент из пары содержится в списке D, а другой нет, или наоборот.


7⃣ if (x**2)+(y**2) >= max(D)**2:
Проверка условия: если квадрат суммы элементов пары больше или равен квадрату максимального значения из списка D.


8⃣ R.append(x + y)
Добавление суммы элементов пары x и y в список R.


🔟 print(len(R), max(R))
Вывод количества элементов в списке R и максимального значения из списка R.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
12442
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 2110 #polyakov по информатике #ЕГЭ12
Уровень:
Сложный

🚩 Условие задачи:
Дана программа для исполнителя Редактор:

ПОКА нашлось(21)
заменить (21, 6)

Исходная строка содержит десять единиц и некоторое количество двоек, других цифр нет, точный порядок расположения единиц и двоек неизвестен. После выполнения программы получилась строка с суммой цифр 50. Какое наименьшее количество двоек могло быть в исходной строке?


🚩 Теоретическая справка:
Опишу в следующем посте*


👩‍💻 Код решения:
from itertools import *

for n in range(1, 10):
for s in product('12', repeat=10+n):
if s.count('1') == 10:
s = ''.join(s)

while '21' in s:
s = s.replace('21', '6', 1)
if sum(map(int, s)) == 50:
print(n)
exit()

# Ответ: 8


👩‍💻 Комментарии к коду:

1⃣ from itertools import *
Импорт всех функций из модуля itertools.


2⃣ for n in range(1, 10):
Цикл for, который проходит по значениям n от 1 до 9 включительно.


3⃣ for s in product('12', repeat=10+n):
Вложенный цикл for, который поочередно формирует кортежи из повторений символов '1' и '2', накопленных 10+n раз, и сохраняет их в переменную s.


4⃣ if s.count('1') == 10:
Проверка условия: если символ '1' встречается в строке s 10 раз.


5⃣ s = ''.join(s)
Преобразование кортежа в строку s.


6⃣ while '21' in s:
Цикл while, который будет продолжаться до тех пор, пока в строке s присутствует подстрока '21'.


7⃣ s = s.replace('21', '6', 1)
Замена первого вхождения подстроки '21' на символ '6' в строке s.


8⃣ if sum(map(int, s)) == 50:
Проверка условия: если сумма цифр в строке s, преобразованных в целые числа, равна 50.


0⃣ print(n)
Вывод значения переменной n.


🔟 exit()
Завершение выполнения программы.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1077