Информатика | Илья Андрианов | itpy 🧑‍💻
1.04K subscribers
264 photos
20 videos
19 files
631 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
🚩 Разбор номера из нового варианта #statgrad по информатике #ЕГЭ8
Автор: Статград
Уровень: Базовый


🚩 Условие задачи:
Все десятибуквенные коды, составленные из букв, входящих в слово
СКАНЕР, расположены в алфавитном порядке и пронумерованы.

Определите количество кодов, для которых одновременно выполнены условия:
1) номер кода в списке делится на 3;
2) первая буква кода – согласная;
3) код содержит ровно одну букву Р.


👩‍💻 Код решения:
from itertools import product
num = 0
cnt = 0
for s in product(sorted('СКАНЕР'), repeat=10):
word = ''.join(s)
num += 1
if num % 3 == 0:
if word[0] in 'СКНР':
if word.count('Р') == 1:
cnt += 1
print(cnt)

# Ответ: 4531250


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

1⃣ from itertools import product
Импорт функции product из модуля itertools, которая создает все возможные комбинации длиной n из указанных элементов.


2⃣ num = 0
Инициализация переменной num для отслеживания общего количества рассмотренных комбинаций.


3⃣ cnt = 0
Инициализация переменной cnt для подсчета количества комбинаций, удовлетворяющих условиям задачи.


4⃣ for s in product(sorted('СКАНЕР'), repeat=10):
Цикл for, в котором перебираются все возможные комбинации длиной 10 символов из отсортированных букв 'СКАНЕР'.


5⃣ word = ''.join(s)
Объединение символов из текущей комбинации в одно слово для дальнейшей проверки.


6⃣ num += 1
Увеличение счетчика num на 1 для отслеживания количества рассмотренных комбинаций.


7⃣ if num % 3 == 0:
Проверка, что номер рассматриваемой комбинации делится на 3 без остатка.


8⃣ if word[0] in 'СКНР':
Проверка, содержит ли первая буква слова 'С', 'К', 'Н' или 'Р'.


0⃣ if word.count('Р') == 1:
Проверка, что буква 'Р' встречается в слове ровно 1 раз.


1⃣0⃣ cnt += 1
Увеличение счетчика cnt на 1, если текущая комбинация удовлетворяет всем условиям.


1⃣1⃣ print(cnt)
Вывод количества комбинаций, удовлетворяющих заданным условиям.


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

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

🚩 Условие задачи:
Числа AB267D1_p и F024A89_p записаны в системе счисления с основанием p.
При каком минимальном p сумма этих чисел будет делиться на p–1?


🚩 Теоретическая справка:
Так как функция int(num, base) работает только в диапазоне от 2 до 36, то нам приходится написать свою универсальную функцию my_int(), изучите её и используйте в сложных задачах.


👩‍💻 Код решения:
def my_int(num, base):
return sum(x*base**i for i, x in enumerate(num[::-1]))


for p in range(16, 100):
A = my_int([10, 11, 2, 6, 7, 13, 1], p)
B = my_int([15, 0, 2, 4, 10, 8, 9], p)
if (A + B) % (p-1) == 0:
print(p)
break

# Ответ: 50


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

1⃣ def my_int(num, base):
Определение функции my_int, которая принимает список чисел num и основание base.


2⃣ return sum(x*base**i for i, x in enumerate(num[::-1]))
Функция возвращает сумму произведений элементов списка num на соответствующие степени base.


3⃣ for p in range(16, 100):
Запуск цикла for, который перебирает числа от 16 до 99 и использует их в качестве p.


4⃣ if (my_int([10, 11, 2, 6, 7, 13, 1], p) + my_int([15, 0, 2, 4, 10, 8, 9], p)) % (p-1) == 0:
Проверка условия: сумма результатов функции my_int для двух списков их модуль по отношению к p-1 равен нулю.


5⃣ print(p)
Вывод числа p, которое удовлетворяет условиям, после чего программа завершает работу, используя оператор break.


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

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

🚩 Условие задачи:
Логическая функция F задаётся выражением:
((x ∨ y) → (y ∧ w)) ≡ ¬ ((y ∧ z) → (w ∨ x))
Дан частично заполненный фрагмент, содержащий неповторяющиеся
строки таблицы истинности функции F.

1 1 _ 1 | 1
0 _ 0 0 | 1
0 0 1 1 | 1


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

def F(x, y, z, w):
return ((x or y) <= (y and w)) == (not((y and z) <= (w or x)))


for a1, a2 in product([0, 1], repeat=2):
table = [(1, 1, a1, 1), (0, a2, 0, 0), (0, 0, 1, 1)]
if len(set(table)) == len(table):
for i in permutations('xyzw'):
if [F(**dict(zip(i, r))) for r in table] == [1, 1, 1]:
print(*i, sep='')

# Ответ: zywx


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

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


2⃣ def F(x, y, z, w):
Определение функции F с параметрами x, y, z, w.


3⃣ return ((x or y) <= (y and w)) == (not((y and z) <= (w or x)))
Возвращение результата выражения, которое сравнивает логические операции с параметрами функции.


4⃣ for a1, a2 in product([0, 1], repeat=2):
Цикл, в котором перебираются все возможные комбинации пар из 0 и 1.


5⃣ table = [(1, 1, a1, 1), (0, a2, 0, 0), (0, 0, 1, 1)]
Создание списка table с кортежами чисел 0 и 1, используемыми в качестве аргументов функции.


6⃣ if len(set(table)) == len(table):
Проверка условия, что все элементы в table уникальны.


7⃣ for i in permutations('xyzw'):
Цикл, который перебирает все перестановки символов 'xyzw'.


8⃣ if [F(**dict(zip(i, r))) for r in table] == [1, 1, 1]:
Проверка условия, что результаты функции F для каждого элемента из table равны [1, 1, 1].


0⃣ print(*i, sep='')
Вывод комбинации символов i без разделителя на экран.


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

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

🚩 Условие задачи:
При каком наименьшем целом A выражение
((y < 20) → (x > 70)) ∨ ¬((x < A) → (y > A))
окажется тождественно истинным при любых целых значениях x и y?


🚩 Теоретическая справка:
Все 15 номера суперудобно решать через функцию all() про нее писали в этой статье.


👩‍💻 Код решения:
def F(x, y, A):
return ((y < 20) <= (x > 70)) or (not((x < A) <= (y > A)))

for A in range(10000):
if all(F(x, y, A) for x in range(100) for y in range(100)):
print(A)
break

# Ответ: 71


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

1⃣ def F(x, y, A):
Определение функции F, которая принимает три аргумента: x, y и A.


2⃣ return ((y < 20) <= (x > 70)) or (not((x < A) <= (y > A)))
Функция возвращает результат логического выражения, которое проверяет два условия и возвращает результат их логической операции or.


3⃣ for A in range(10000):
Запуск цикла for, который перебирает значения A от 0 до 9999.


4⃣ if all(F(x, y, A) for x in range(100) for y in range(100)):
Проверка: все результаты функции F(x, y, A) истинны для всех комбинаций значений x от 0 до 99 и y от 0 до 99.


5⃣ print(A)
Вывод значения A, которое соответствует условиям задачи, после чего выполнение программы завершается с помощью оператора break.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
64321
🚩🚩 Разбор номера #statgrad по информатике #ЕГЭ17
Автор: Статград
Уровень:
Сложный

🚩 Условие задачи:
Назовём четвёркой четыре идущих подряд элемента
последовательности. Определите количество четвёрок, для которых
выполняются следующие условия:
– в четвёрке есть хотя бы два пятизначных числа и хотя бы одно не пятизначное;
– в четвёрке больше чисел, кратных 3, чем чисел, кратных 7;
– сумма элементов четвёрки больше максимального элемента
последовательности, запись которого заканчивается на 538, но меньше
удвоенного значения этого элемента.


👩‍💻 Код решения:
numbers = [int(x) for x in open('17.txt')]
filtered = [x for x in numbers if str(x)[-3:] == '538']
result = []

for i in range(len(numbers) - 3):
# x, y, z, w = numbers[i:i + 4]
length = [len(str(abs(a))) for a in numbers[i:i + 4]]

if 2 <= length.count(5) < 4:
multiples_of_3 = [a for a in numbers[i:i + 4] if a % 3 == 0]
multiples_of_7 = [a for a in numbers[i:i + 4] if a % 7 == 0]

if len(multiples_of_3) > len(multiples_of_7):
if max(filtered) < sum(numbers[i:i + 4]) < max(filtered) * 2:
result.append(sum(numbers[i:i + 4]))

print(len(result), max(result))

# Ответ: 260 106865


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

1⃣ numbers = [int(x) for x in open('17.txt')]
Чтение чисел из файла "17.txt" и преобразование их в целочисленный формат, помещение результатов в список numbers.


2⃣ filtered = [x for x in numbers if str(x)[-3:] == '538']
Создание нового списка под названием filtered, который содержит только элементы из numbers, у которых последние три цифры равны '538'.


3⃣ result = []
Инициализация пустого списка с именем result, в который будут помещаться результаты для последующего анализа.


4⃣ for i in range(len(numbers) - 3):
Запуск цикла for, который перебирает индексы элементов numbers за исключением последних трех элементов.


5⃣ # x, y, z, w = numbers[i:i + 4]
Комментарий указывает на предполагаемое использование переменных x, y, z, w для значений из подсписка numbers[i:i + 4], но непосредственно переменные не используются в данном участке кода.


6⃣ length = [len(str(abs(a))) for a in numbers[i:i + 4]]
Создание списка length, содержащего длины строковых представлений абсолютных значений элементов из подсписка numbers[i:i + 4].


7⃣ if 2 <= length.count(5) < 4:
Проверка условия: количество цифр "5" в длинах строковых представлений элементов равно или больше 2 и меньше 4.


8⃣ multiples_of_3 = [a for a in numbers[i:i + 4] if a % 3 == 0]
Формирование списка multiples_of_3, содержащего элементы из подсписка numbers[i:i + 4], которые делятся на 3 без остатка.


0⃣ multiples_of_7 = [a for a in numbers[i:i + 4] if a % 7 == 0]
Формирование списка multiples_of_7, содержащего элементы из подсписка numbers[i:i + 4], которые делятся на 7 без остатка.


1⃣0⃣ if len(multiples_of_3) > len(multiples_of_7):
Проверка условия: количество элементов, делящихся на 3 без остатка, больше количества элементов, делящихся на 7 без остатка.


1⃣1⃣ if max(filtered) < sum(numbers[i:i + 4]) < max(filtered) * 2:
Проверка условия: сумма элементов подсписка numbers[i:i + 4] находится в интервале между максимальным элементом списка filtered и удвоенным значением максимального элемента из filtered.


1⃣2⃣ result.append(sum(numbers[i:i + 4]))
Добавление суммы элементов подсписка numbers[i:i + 4] в список result.


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


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

🚩 Условие задачи:
У исполнителя есть три команды, которые обозначены буквами:
A. Вычесть 1
B. Разделить на 2
С. Разделить на 3

Команда B может быть исполнена только для чётного числа, команда C –
только для числа, кратного 3.

Сколько существует программ, которые преобразуют исходное число 19
в число 1 и при этом траектория вычислений не содержит чисел 12 и 15?


👩‍💻 Код решения:
def F(a, b):
A, B, C = 0, 0, 0
if a <= b or a == 12 or a == 15:
return a == b
A = F(a - 1, b)
if a % 2 == 0:
B = F(a // 2, b)
if a % 3 == 0:
C = F(a // 3, b)
return A + B + C

print(F(19, 1))

# Ответ: 43


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

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


2⃣ A, B, C = 0, 0, 0
Инициализация переменных A, B, C с начальным значением 0.


3⃣ if a <= b or a == 12 or a == 15:
Проверка условия: если a меньше или равно b, или a равно 12, или a равно 15, то выполнить следующий блок кода.


4⃣ return a == b
Возврат результата сравнения a и b (логическое значение True или False).


5⃣ A = F(a - 1, b)
Вызов функции F с аргументами a - 1 и b и присвоение результата переменной A.


6⃣ if a % 2 == 0:
Проверка условия: если a делится на 2 без остатка.


7⃣ B = F(a // 2, b)
Вызов функции F с аргументами a // 2 и b и присвоение результата переменной B.


8⃣ if a % 3 == 0:
Проверка условия: если a делится на 3 без остатка.


0⃣ C = F(a // 3, b)
Вызов функции F с аргументами a // 3 и b и присвоение результата переменной C.


1⃣0⃣ return A + B + C
Возврат суммы значений переменных A, B, C.


1⃣1⃣ print(F(19, 1))
Вызов функции F с аргументами 19 и 1 и вывод результата выполнения функции.


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

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

🚩 Условие задачи:
Определите максимальную длину непрерывного фрагмента, который начинается и заканчивается одной и той же буквой из первой половины алфавита (от A до M) и не содержит эту букву внутри.


👩‍💻 Код решения:
s = open('24.txt').readline()
maxi = 0
for a in 'ABCDEFGHIJKLM':
s = s.replace(a, f'{a} {a}')
maxi = max(maxi, max([len(x) for x in s.split()]))
s = s.replace(f'{a} {a}', a)

print(maxi)

# Ответ: 322


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

1⃣ s = open('24.txt').readline()
Чтение строки из файла '24.txt' и присвоение её содержимого переменной s.


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


3⃣ for a in 'ABCDEFGHIJKLM':
Начало цикла по буквам из строки 'ABCDEFGHIJKLM'.


4⃣ s = s.replace(a, f'{a} {a}')
Замена каждого вхождения буквы a в строке s на a a.


5⃣ maxi = max(maxi, max([len(x) for x in s.split()]))
Обновление переменной maxi, выбирая максимальное значение между текущим значением maxi и максимальной длиной слова из разделенной строки s.


6⃣ s = s.replace(f'{a} {a}', a)
Восстановление оригинальной строки, заменяя a a на a.


7⃣ print(maxi)
Вывод значения maxi, которое содержит максимальную длину слова после обработки всеми буквами из цикла.


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

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

🚩 Условие задачи:
Найдите все натуральные числа, не превышающие 10**9, которые
соответствуют маске 4*64*9?7 и при этом без остатка делятся на 9117.
В ответе запишите все найденные числа в порядке возрастания.


👩‍💻 Код решения:
from fnmatch import *
for x in range(9117, 10**9, 9117):
if fnmatch(str(x), '4*64*9?7'):
print(x)

# Ответ:
# 464967
# 41764977
# 406444977
# 436439907
# 464337927
# 464884947


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

1⃣ from fnmatch import *
Импорт всех функций из модуля fnmatch, который предоставляет возможность использовать шаблоны для сравнения строк.


2⃣ for x in range(9117, 10**9, 9117):
Цикл for для переменной x в диапазоне от 9117 до 10^9 с шагом 9117.


3⃣ if fnmatch(str(x), '4*64*9?7'):
Проверка условия: если строковое представление числа x соответствует шаблону '4*64*9?7' с помощью функции fnmatch.


4⃣ print(x)
Вывод числа x, которое удовлетворяет условию проверки шаблона.


Таким образом, приведенный код ищет числа в заданном диапазоне, которые соответствуют шаблону '4*64*9?7', где символ * означает любую последовательность символов, а символ ? означает любой одиночный символ.

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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
7543
🔤🔤🔤🔤 🔤🔤🔤🔤🔤🔤🔤🔤🔤
Пару слов об авторе канала, давайте знакомиться!

#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем номерам ЕГЭ
#⃣ Вся теория для ЕГЭ в одном месте

📱 Теория: #tpy
📺 Видео: #view
💡 Полезное: #useful
🫰 Шпаргалки: #шпора
👨‍🏫 Про универы: #university

📚 Сборники:
#kege #yandex
#reshu #statgrad
#polyakov

📱 Наш YouTube канал
📱 Читайте ДЗЕН канал
📱 Наши Telegram каналы:

🚩 Подготовка к экзамену ЕГЭ:
Информатика ЕГЭ | itpy 👨‍💻

🚩 Здесь выкладываю теорию Python:
Программирование на Python | itpy 💻

🚩 Подготовка к экзамену ОГЭ:
Информатика ОГЭ | itpy 👨‍🏫

🚩 Честные обзоры на IT университеты:
Hey Student! 🎓


🔤🔤 🔤🔤🔤🔤🔤🔤🔤
😶 Автор канала: @ilandroxxy
Please open Telegram to view this post
VIEW IN TELEGRAM
45542
У нас уже собралась неплохая такая подборка 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 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
843
🚩 Сохраняйте список уже разобранных задачи на нашем канале #ЕГЭ15 #useful

🚩🚩 Разбор номера 16447 #kege по информатике #ЕГЭ15

🚩🚩 Разбор номера 34537 #reshu по информатике #ЕГЭ15

🚩🚩 Разбор номера #statgrad по информатике #ЕГЭ15
Автор: Статград
Уровень:
Сложный

🚩🚩 Разбор номера 12924 #kege по информатике #ЕГЭ15
Уровень: Базовый


🚩🚩 Разбор номера 16381 #kege по информатике #ЕГЭ15
Автор: ЕГКР 27.04.24
Уровень: Базовый


🚩🚩 Разбор номера 8503 #kege по информатике #ЕГЭ15
Автор: Апробация 17.05
Уровень: Базовый


👨‍💻 Наша подборка Stepik задач №15 для подготовки #ЕГЭ9 #useful
1. Домашка, задачи базового уровня (ФИПИ)
2. Практика, задачи повышенной сложности

Информатика ЕГЭ | itpy 🧑‍💻
Кстати у нас есть чатик
Please open Telegram to view this post
VIEW IN TELEGRAM
48542
🚩 Сохраняйте список уже разобранных задачи на нашем канале #ЕГЭ14 #useful

Наша подборка Stepik задач №14 для подготовки 👨‍💻
1. Домашка, задачи базового уровня (ФИПИ)
2. Практика, задачи повышенной сложности

🚩🚩 Разбор номера 8425 #kege по информатике #ЕГЭ14

🚩🚩 Разбор номера 39243 #reshu по информатике #ЕГЭ14
Уровень: Базовый

🚩🚩 Разбор номера 13246 #kege по информатике #ЕГЭ14
Автор задачи: (М. Попков)
Уровень: Средний

🚩🚩 Разбор номера 5895 #kege по информатике #ЕГЭ14
Автор задачи: (А. Игнатюк)
Уровень: Сложный

🚩🚩 Разбор номера 4937 #kege по информатике #ЕГЭ14
Уровень: Средний

🚩🚩 Разбор номера #statgrad по информатике #ЕГЭ14
Автор: Статград
Уровень:
Средний

🚩🚩 Разбор номера 16261 #kege по информатике #ЕГЭ14
Автор: Е.Джобс
Уровень: Базовый

🚩🚩 Разбор номера 13910 #kege по информатике #ЕГЭ14
Автор: Л. Шастин
Уровень: Базовый

🚩🚩 Разбор номера 17870 #kege по информатике #ЕГЭ14
Автор: Демоверсия 2025
Уровень: Базовый


🚩🚩 Разбор номера 17868 #kege по информатике #ЕГЭ14
Автор: Демоверсия 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
🚩🚩 Разбор номера из #statgrad по информатике #ЕГЭ23
Автор: Статград
Уровень: Сложный


🚩 Условие задачи:
Исполнитель преобразует число на экране. У исполнителя есть две команды:
A. Прибавь 1
B. Умножить на 2

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


🚩 Теоретическая справка:
На картинке я прикрепил два своих решения одной и той же задачи, но позже заметил, что, несмотря на то что оба варианта дают правильный ответ, один из них неверный! А именно первый вариант является неправильным, так как в нем рассматриваются все цифры, а не числа. Правильным подходом будет разбить все числа с помощью c+' '+str(a), чтобы таким образом рассматривать лишь четные числа. Будьте внимательны!


👩‍💻 Код решения:
def F(a, b, c):
if a >= b:
M = [int(x) for x in c.split() if int(x) % 2 == 0]
return a == b and len(M) <= 4
return F(a+1, b, c+' '+str(a)) + F(a*2, b, c+' '+str(a))


print(F(1, 17, ''))

# Ответ: 8


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

1⃣ def F(a, b, c):
Объявление функции F с тремя параметрами: a, b и c.


2⃣ if a >= b:
Проверка, если значение a больше или равно b.


3⃣ M = [int(x) for x in c.split() if int(x) % 2 == 0]
Создание списка M, который содержит четные числа из строки c, преобразуя их в целые значения.


4⃣ return a == b and len(M) <= 4
Возвращение результата: True, если a равно b и количество четных чисел в M не превышает 4.


5⃣ return F(a+1, b, c+' '+str(a)) + F(a*2, b, c+' '+str(a))
Рекурсивный вызов функции F для двух случаев: увеличивая a на 1 и удваивая a, добавляя текущий a в строку c.


6⃣ print(F(1, 17, ''))
Вызов функции F с параметрами 1, 17 и пустой строкой, вывод результата на экран.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Второй канал про теорию Python📱
Please open Telegram to view this post
VIEW IN TELEGRAM
83🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера #statgrad по информатике #ЕГЭ17
Автор: Статград
Уровень:
Сложный

🚩 Условие задачи:
Назовём четвёркой четыре идущих подряд элемента
последовательности. Определите количество четвёрок, для которых
выполняются следующие условия:
– в четвёрке есть хотя бы два пятизначных числа и хотя бы одно не пятизначное;
– в четвёрке больше чисел, кратных 3, чем чисел, кратных 7;
– сумма элементов четвёрки больше максимального элемента
последовательности, запись которого заканчивается на 538, но меньше
удвоенного значения этого элемента.


👩‍💻 Код решения:
numbers = [int(x) for x in open('17.txt')]
filtered = [x for x in numbers if str(x)[-3:] == '538']
result = []

for i in range(len(numbers) - 3):
# x, y, z, w = numbers[i:i + 4]
length = [len(str(abs(a))) for a in numbers[i:i + 4]]

if 2 <= length.count(5) < 4:
multiples_of_3 = [a for a in numbers[i:i + 4] if a % 3 == 0]
multiples_of_7 = [a for a in numbers[i:i + 4] if a % 7 == 0]

if len(multiples_of_3) > len(multiples_of_7):
if max(filtered) < sum(numbers[i:i + 4]) < max(filtered) * 2:
result.append(sum(numbers[i:i + 4]))

print(len(result), max(result))

# Ответ: 260 106865


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

1⃣ numbers = [int(x) for x in open('17.txt')]
Чтение чисел из файла "17.txt" и преобразование их в целочисленный формат, помещение результатов в список numbers.


2⃣ filtered = [x for x in numbers if str(x)[-3:] == '538']
Создание нового списка под названием filtered, который содержит только элементы из numbers, у которых последние три цифры равны '538'.


3⃣ result = []
Инициализация пустого списка с именем result, в который будут помещаться результаты для последующего анализа.


4⃣ for i in range(len(numbers) - 3):
Запуск цикла for, который перебирает индексы элементов numbers за исключением последних трех элементов.


5⃣ # x, y, z, w = numbers[i:i + 4]
Комментарий указывает на предполагаемое использование переменных x, y, z, w для значений из подсписка numbers[i:i + 4], но непосредственно переменные не используются в данном участке кода.


6⃣ length = [len(str(abs(a))) for a in numbers[i:i + 4]]
Создание списка length, содержащего длины строковых представлений абсолютных значений элементов из подсписка numbers[i:i + 4].


7⃣ if 2 <= length.count(5) < 4:
Проверка условия: количество цифр "5" в длинах строковых представлений элементов равно или больше 2 и меньше 4.


8⃣ multiples_of_3 = [a for a in numbers[i:i + 4] if a % 3 == 0]
Формирование списка multiples_of_3, содержащего элементы из подсписка numbers[i:i + 4], которые делятся на 3 без остатка.


0⃣ multiples_of_7 = [a for a in numbers[i:i + 4] if a % 7 == 0]
Формирование списка multiples_of_7, содержащего элементы из подсписка numbers[i:i + 4], которые делятся на 7 без остатка.


1⃣0⃣ if len(multiples_of_3) > len(multiples_of_7):
Проверка условия: количество элементов, делящихся на 3 без остатка, больше количества элементов, делящихся на 7 без остатка.


1⃣1⃣ if max(filtered) < sum(numbers[i:i + 4]) < max(filtered) * 2:
Проверка условия: сумма элементов подсписка numbers[i:i + 4] находится в интервале между максимальным элементом списка filtered и удвоенным значением максимального элемента из filtered.


1⃣2⃣ result.append(sum(numbers[i:i + 4]))
Добавление суммы элементов подсписка numbers[i:i + 4] в список result.


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


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥74❤‍🔥3
🚩 Разбор номера из нового варианта #statgrad по информатике #ЕГЭ8
Автор: Статград
Уровень: Базовый


🚩 Условие задачи:
Все десятибуквенные коды, составленные из букв, входящих в слово
СКАНЕР, расположены в алфавитном порядке и пронумерованы.

Определите количество кодов, для которых одновременно выполнены условия:
1) номер кода в списке делится на 3;
2) первая буква кода – согласная;
3) код содержит ровно одну букву Р.

Кликни, чтобы развернуть полностью 👆


👩‍💻 Код решения:
from itertools import product
num = 0
cnt = 0
for s in product(sorted('СКАНЕР'), repeat=10):
word = ''.join(s)
num += 1
if num % 3 == 0:
if word[0] in 'СКНР':
if word.count('Р') == 1:
cnt += 1
print(cnt)

Ответ: 4531250


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

1⃣ from itertools import product
Импорт функции product из модуля itertools, которая создает все возможные комбинации длиной n из указанных элементов.


2⃣ num = 0
Инициализация переменной num для отслеживания общего количества рассмотренных комбинаций.


3⃣ cnt = 0
Инициализация переменной cnt для подсчета количества комбинаций, удовлетворяющих условиям задачи.


4⃣ for s in product(sorted('СКАНЕР'), repeat=10):
Цикл for, в котором перебираются все возможные комбинации длиной 10 символов из отсортированных букв 'СКАНЕР'.


5⃣ word = ''.join(s)
Объединение символов из текущей комбинации в одно слово для дальнейшей проверки.


6⃣ num += 1
Увеличение счетчика num на 1 для отслеживания количества рассмотренных комбинаций.


7⃣ if num % 3 == 0:
Проверка, что номер рассматриваемой комбинации делится на 3 без остатка.


8⃣ if word[0] in 'СКНР':
Проверка, содержит ли первая буква слова 'С', 'К', 'Н' или 'Р'.


0⃣ if word.count('Р') == 1:
Проверка, что буква 'Р' встречается в слове ровно 1 раз.


1⃣0⃣ cnt += 1
Увеличение счетчика cnt на 1, если текущая комбинация удовлетворяет всем условиям.


1⃣1⃣ print(cnt)
Вывод количества комбинаций, удовлетворяющих заданным условиям.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8🔥551