Информатика | Илья Андрианов | itpy 🧑‍💻
1.04K 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
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 8960 #kege по информатике #ЕГЭ25
Автор: Е.Джобс
Уровень: Базовый


🚩 Условие задачи:
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.

Найдите первые пять чисел, больших 500 000, сумма делителей которых соответствует маске *7?. Найденные числа выведите в порядке возрастания, справа от каждого запишите найденную сумму делителей.


🚩 Теоретическая справка:
Нужно найти первые пять чисел, больших 500 000, сумма делителей которых соответствует маске *7?.


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

def divisors(x):
div = []
for j in range(1, int(x**0.5)+1):
if x % j == 0:
div += [j, x // j]
return sorted(set(div))

k = 0
for x in range(500_001, 10**10):
summa = sum(divisors(x))
if fnmatch(str(summa), '*7?'):
print(x, summa)
k += 1
if k == 5:
break

Ответ:
500001 666672
500048 968874
500069 500070
500079 666776
500114 750174



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

1⃣ from fnmatch import *
Импортируется модуль fnmatch.


2⃣ def divisors(x):
Создаем функцию divisors.


3⃣ div = []
Создаётся пустой список div


4⃣ for j in range(1, int(x**0.5)+1):
Запускается цикл for, который проходит по всем числам от 1 до квадратного корня из x (включительно).


5⃣ if x % j == 0:
Проверяется, делится ли число x на j без остатка.


6⃣ div += [j, x // j]
Если j является делителем, то в список div добавляются как сам делитель j, так и результат деления x на j.


7⃣ return sorted(set(div))
Возвращается отсортированный список уникальных делителей.


8⃣ k = 0
Создаем счетчик.


0⃣ for x in range(500_001, 10**10):
Запускается цикл for, который проходит по всем числам от 500,001 до 10^10.


🔟 summa = sum(divisors(x))
Для каждого числа x вычисляется сумма всех его делителей с помощью функции divisors(x), а затем результат сохраняется в переменной summa.


1⃣1⃣ if fnmatch(str(summa), '*7?'):
Проверяется, соответствует ли строка, представляющая сумму делителей.


1⃣2⃣ print(x, summa)
Если условие выше выполняется, то выводится число x и сумма его делителей summa.


1⃣3⃣ k += 1
Увеличивается счётчик k на 1, так как найдено число, удовлетворяющее условию.


1⃣4⃣ if k == 5:
Проверяется, достиг ли счётчик k значения 5.


1⃣5⃣ break
Прерывает выполнение цикла for, если найдено 5 чисел, удовлетворяющих условию.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Кстати у нас есть чатик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥97🤯6
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 4333 #kege по информатике #ЕГЭ23
Автор: /dev/inf advanced
Уровень: Средний


🚩 Условие задачи:
Исполнитель преобразует число на экране.
У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 3
3. Возвести в квадрат
Программа для исполнителя – это последовательность команд.
Известно, что исполнитель не может повторить команду, выполненную на предыдущем шаге. Например, если была выполнена команда 1, на следующем шаге могут быть выполнены только команды 2 или 3.
Сколько существует программ, для которых при исходном числе 1 результатом является число 25, и при этом траектория вычислений содержит число 5, но не содержит число 6?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 11, 12.


🚩 Теоретическая справка:
Исполнитель не может повторить команду, выполненную на предыдущем шаге.


👩‍💻 Код решения:
def F(a, b, c):
if a >= b or a == 6:
return a == b
if c == '1':
return F(a + 3, b, '2') + F(a ** 2, b, '3')
if c == '2':
return F(a + 1, b, '1') + F(a ** 2, b, '3')
if c == '3':
return F(a + 1, b, '1') + F(a + 3, b, '2')
return F(a + 1, b, '1') + F(a + 3, b, '2') + F(a ** 2, b, '3')


print(F(1, 5, '') * F(5, 25, ''))

Ответ: 10


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

1⃣ def F(a, b, c):
Создается функция F, которая принимает три аргумента.


2⃣ if a >= b or a == 6:
Если текущее значение a больше или равно значению b, или a равно 6.


3⃣ return a == b
Если условие из предыдущей строки выполняется, функция возвращает True, и False в противном случае.


4⃣ if c == '1':
Проверяется, равно ли значение c строке '1'.


5⃣ return F(a + 3, b, '2') + F(a 2, b, '3')
Если c == '1', функция вызывает саму себя дважды.


6⃣ if c == '2':
Проверяется, равно ли значение c строке '2'.


7⃣ return F(a + 1, b, '1') + F(a 2, b, '3')
Если c == '2', функция вызывает саму себя дважды.


8⃣ if c == '3':
Проверяется, равно ли значение c строке '3'.


0⃣ return F(a + 1, b, '1') + F(a + 3, b, '2')
Если c == '3', функция вызывает саму себя дважды.


🔟 return F(a + 1, b, '1') + F(a + 3, b, '2') + F(a 2, b, '3')
Если значение c не равно '1', '2' или '3' (например, пустая строка `''`), функция вызывает саму себя трижды.


1⃣1⃣ print(F(1, 5, '') * F(5, 25, ''))
Результаты этих вызовов перемножаются, и итоговое значение выводится на экран.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵💵
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥107🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 11953 #kege по информатике #ЕГЭ23
Автор: PRO100 ЕГЭ
Уровень: Средний


🚩 Условие задачи:
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Прибавить последнюю цифру
B. Добавить остаток от деления на 68
C. Возвести в квадрат
Программа для исполнителя – это последовательность команд.
Команда А прибавляет к числу его последнюю цифру. Например, из числа 68 получится число 76.
Команда B прибавляет к числу его остаток от деления на 68. Например, из числа 10 получится число 20.
Команда C возводит число в квадрат. Например, из числа 9 получится число 81.
Если после выполнения команды получается такое же число, то команду нельзя применять к этому числу. Например, к числу 10 нельзя применить команду A, так как 10 + 0 = 10.
Сколько существует программ, для которых при исходном числе 2 результатом является число 680, при этом траектория вычислений содержит число 68 и не содержит числа 100?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.


🚩 Теоретическая справка:
Если после выполнения команды получается такое же число, то команду нельзя применять к этому числу. Например, к числу 10 нельзя применить команду A, так как 10 + 0 = 10.


👩‍💻 Код решения:
from functools import lru_cache

@lru_cache(None)

def F(a, b):
if a >= b or a == 100:
return a == b
count = 0
x = a % 10
if x != 0:
count += F(a + x, b)
x = a % 68
if x != 0:
count += F(a + x, b)
x = a ** 2
if x != a:
count += F(x, b)
return count
print(F(2, 68) * F(68, 680))

Ответ: 47997789947424


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

1⃣ from functools import lru_cache
Импортируется декоратор lru_cache из модуля functools.


2⃣ @lru_cache(None)
Декоратор lru_cache применяется к функции . Параметр None означает, что кэш не имеет ограничений по размеру.


3⃣ def F(a, b):
Определяется функция F, которая принимает два аргумента.


4⃣ if a >= b or a == 100:
Если текущее значение a больше или равно значению b, или a равно 100.


5⃣ return a == b
Если условие из предыдущей строки выполняется, функция возвращает True, и False в противном случае.


6⃣ count = 0
Создаем счетчик.


7⃣ x = a % 10
Вычисляется последняя цифра числа a.


8⃣ if x != 0:
Проверяется, не равна ли последняя цифра числа a нулю.


0⃣ count += F(a + x, b)
Если последняя цифра числа a не равна нулю, функция вызывает саму себя с аргументами (a + x, b) и результат этого вызова добавляется к переменной count.


🔟 x = a % 68
Вычисляется остаток от деления числа a на 68.


1⃣1⃣ if x != 0:
Проверяется, не равен ли остаток от деления числа a на 68 нулю.


1⃣2⃣ count += F(a + x, b)
Если остаток от деления числа a на 68 не равен нулю, функция вызывает саму себя с аргументами (a + x, b) и результат этого вызова добавляется к переменной count.


1⃣3⃣ x = a** 2
Вычисляется квадрат числа a.


1⃣4⃣ if x != a:
Проверяется, не равен ли квадрат числа a самому числу a.


1⃣5⃣ count += F(x, b)
Если квадрат числа a не равен самому числу a, функция вызывает саму себя с аргументами (x, b) и результат этого вызова добавляется к переменной count.


1⃣6⃣ return count
Возвращается значение переменной count.


1⃣7⃣ print(F(2, 68) * F(68, 680))
Результаты этих вызовов перемножаются, и итоговое значение выводится на экран.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Кстати у нас есть чатик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1286
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 11228 #kege по информатике #ЕГЭ9
Автор: М.Ишимов
Уровень: Сложный

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


🚩 Теоретическая справка:
Определите сумму чисел всех строк таблицы


👩‍💻 Код решения:
from itertools import *
summa = 0
for s in open('9.txt'):
M = sorted([int(x) for x in s.split()])
copied_2 = [x for x in M if M.count(x) == 2]
copied_3 = [x for x in M if M.count(x) == 3]
if len(copied_3) == 3 and len(copied_2) == 4:
if any(sum(p[:2]) % 2 != 0 and sum(p[2:]) % 2 != 0 for p in permutations(M[:4])):
summa += sum(M)
print(summa)

Ответ: 4675


📱 Комментарии к коду:

1⃣ from itertools import *
Импортируется модуль itertools.


2⃣ summa = 0
Создается переменная summa.


3⃣ for s in open('9.txt'):
В цикле for происходит построчное чтение файла. Каждая строка файла сохраняется в переменную s.


4⃣ M = sorted([int(x) for x in s.split()])
Строка s разбивается на список строк с помощью метода split(). Каждая строка преобразуется в целое число с помощью int(x). Полученный список чисел сортируется и сохраняется в переменную M.


5⃣ copied_2 = [x for x in M if M.count(x) == 2]
Создается список copied_2, который содержит элементы из списка M, встречающиеся ровно два раза.


6⃣ copied_3 = [x for x in M if M.count(x) == 3]
Создается список copied_3, который содержит элементы из списка M, встречающиеся ровно три раза.


7⃣ if len(copied_3) == 3 and len(copied_2) == 4:
Проверяется условие: если длина списка copied_3 равна 3 и длина списка copied_2 равна 4 .


8⃣ if any(sum(p[:2]) % 2 != 0 and sum(p[2:]) % 2 != 0 for p in permutations(M[:4])):
Генерируются все возможные перестановки первых четырех элементов списка M . Для каждой перестановки p проверяется, является ли сумма первых двух элементов нечетной и сумма последних двух элементов также нечетной.


0⃣ summa += sum(M)
Сумма всех элементов списка M добавляется к переменной summa.


🔟 print(summa)
Выводится значение переменной summa.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Второй канал про теорию Python 📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14👍8🔥66
📢 Интенсив по неравенствам ЕГЭ по математике (номер 15)! 🎯

🔥 Разберем все типы неравенств – от простых до сложных! Подойдет для 10-11 классов и всех, кто готовится к ЕГЭ!

📌 Что ты получишь?
✔️ 6 занятий по 1.5 часа с пошаговым разбором всех типов неравенств
✔️ Четкие методы решения и разбор сложных случаев
✔️ Мини-группу до 5 человек → индивидуальный подход
✔️ Тренировочный мини-экзамен перед ЕГЭ

Кто я? Меня зовут Марина и я 🔥 Репетитор по математике с опытом подготовки к профильному ЕГЭ по математике более 3 лет 💡 училась в ВШЭ на бюджете, а теперь студентка 3 курса Sejong University в Сеуле – знаю, как объяснить сложные темы простыми словами 📈 Готовлю учеников к экзаменам так, что они не просто решают задачи, а понимают математику

📅 Старт: 10 марта 🕔 Занятия по понедельникам в 17:00 (МСК) 💰 8000 руб. → 7000 руб. с промокодом "информат" (скидка 1000₽)
⚡️ Акция только для подписчиков этого канала! Промокод действует 48 часов!

Подробности на фотках!)

✉️ Записывайся в личку @marinkaavia_math – просто напиши "Хочу на интенсив" и укажи промокод!
👍1812🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Универсальная функция перевода числа из 10-ой системы счисления в b-ую #tpy

При подготовке к ЕГЭ по информатике важно уметь работать с различными системами счисления для таких номеров как 5 и 14. Сегодня разберем универсальную функцию на Python, которая позволяет перевести число из десятичной системы счисления в любую другую (от 2 до 36).

1. Импортируем необходимые символы:
from string import *

Здесь используются модули digits и ascii_uppercase, чтобы задать доступные символы для различных систем счисления.


2. Образуем строку alphabet:
alphabet = digits + ascii_uppercase

Эта строка содержит все символы, используемые в системах счисления: цифры от 0 до 9 и заглавные английские буквы от A до Z.


3. Основная функция convert:
def convert(n, b):
r = ''
while n > 0:
r += alphabet[n % b]
n //= b
return r[::-1]

Функция convert принимает два параметра: число n в десятичной системе и основание b, в которое его нужно перевести. Внутри цикла проводится деление числа n на основание b с остатком, который используется для получения соответствующего символа из alphabet. Собранные символы переворачиваются в обратном порядке для получения правильного представления числа в новой системе.


4. Примеры использования:
n = 15552
print(convert(n, 2)) # Перевод в двоичную систему
print(convert(n, 8)) # Перевод в восьмеричную систему
print(convert(n, 16)) # Перевод в шестнадцатеричную систему
print(convert(n, 3)) # Перевод в троичную систему

Эти примеры показывают, как использовать функцию для перевода числа 15552 в различные системы счисления.

Более короткий вариант написания этой функции оставлю в комментариях к этому посту, не стесняйтесь ставить реакции на этот пост 🔥

Информатика ЕГЭ | itpy 🧑‍💻
Второй канал про теорию Python 📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥33🔥10👍76
Друзья, поддержите контент реакциями! Правда, очень сложно найти мотивацию для создания постов, когда не получаешь никакой отдачи 🥲

Крик души! Вам же это несложно, а мне будет очень приятно 🤗
Anonymous Poll
93%
Сделаем и правда не сложно ✔️
7%
Принципиально не ставлю лайки
👍49❤‍🔥1611
Ребята, спасибо огромное за активность под прошлым постом — вы меня очень порадовали! 💛

Обращаюсь с небольшим запросом: давно хотел узнать, в каких часовых поясах живут подписчики моего канала.
Anonymous Poll
42%
Москва
9%
Питер
21%
Новосибирск
5%
Казань
11%
Екатеринбург
3%
Красноярск
4%
Владивосток
1%
Калининград
4%
Свой вариант оставляйте в комментах 🫰
12😁119🤯3🤔2
Что выведет этот код?
Anonymous Quiz
30%
True
38%
False
11%
0
21%
1
Говорят завтра досрок пишут, есть тут счастливчики?
Anonymous Poll
7%
Я пишу ✔️
93%
Не пишу
Ребят, кто завтра пишет досрок, два важных вопроса!

Во1 нужна ли помощь с ДВ? Если, конечно, их накидают..🙂

2. Напишите мне в личку @ilandroxxy, сильно хочется, поболтать 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🔥1
This media is not supported in the widget
VIEW IN TELEGRAM
👍106❤‍🔥4🤯1
Ребята с канала @infkege выложили полный вариант досрочной волны — очень рекомендую порешать, это будет полезно для подготовки. Ссылку оставляю здесь: тык 🖥

Сложных заданий, на мой взгляд, не нашлось, но если хотите, то можно разобрать задания 24, 26 и ТИ кодом. Кидайте реакции, а также пишите в комментариях, какие ещё номера стоит разобрать!

Информатика ЕГЭ | itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥43👍2
This media is not supported in your browser
VIEW IN TELEGRAM
❗️ А еще хочу поднять очень важную тему, по которой мне периодически задают вопросы студенты: можно ли купить ответы на ЕГЭ?

На мой взгляд — купить ответы невозможно, а вот списать, к сожалению, можно, и это действительно большая проблема. Например, недавно в сети появилось видео с досрочного экзамена по Дальнему Востоку: кто-то сумел пронести телефон и снять все задания на видео.

Что происходит дальше? Такое видео отправляется «нужным» людям, а потом ученик выходит в туалет — и получает готовые ответы. Ведь, как известно, на нашем экзамене проверяются только финальные ответы, а не ход решения.

Это тревожная тенденция, и рано или поздно она обязательно должна быть как-то решена.

Информатика ЕГЭ | itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥11🤯8
Друзья, открываю набор на подготовку к ЕГЭ по информатике на сезон 2025/2026!

❗️ Кол-во мест в этом году сильно ограничено, возьму 20 человек (отправляйте друзьям десятиклассникам).


Старт занятий: с 15 июля.
Занимаемся в парах — оптимальный формат для глубокого усвоения материала. Есть возможность прийти со своим другом.

Расписание: Занятия проходят 2 раза в неделю:
— понедельник / четверг
— вторник / пятница

Формат: дистанционно, через Telegram, с видеоконспектами, ботом для домашних заданий и поддержкой в чате.

Прайс (занятие 60 минут):
▪️ 2 занятия — 4000 ₽
▪️ 4 занятия — 7000 ₽
▪️ 8 занятий — 12000 ₽
Скидка 20% при покупке первого абонемента!


О преподавателе или почему выбирают меня, читайте на Авито 🙋‍♂️

Записаться на бесплатное пробное занятие👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥5