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

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
🚩🚩 Разбор номера 21422 #kege по информатике #ЕГЭ25
Автор: Досрочная волна 2025
Уровень:
Базовый

🚩 Условие задачи:
Напишите программу, которая перебирает целые числа, бóльшие 1 125 000, в порядке возрастания и ищет среди них такие, у которых
есть натуральный делитель, оканчивающийся на цифру 7 и не равный ни самому числу, ни числу 7. В ответе запишите в первой строке таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – наименьший делитель для каждого из них, оканчивающийся цифрой 7, не равный ни самому числу, ни числу 7.


🚩 Теоретическая справка:
Относительно базовая задача 25 номера, но надо добавить этот разбор на канал для объективности, так как примеры ФИПИшных задач в списке разборов отсутствуют..


👩‍💻 Код решения:
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))


cnt = 0
for x in range(1_125_000+1, 10**10):
div = [j for j in divisors(x) if j != x and j % 10 == 7 and j != 7]
if len(div) > 0:
print(x, min(div))
cnt += 1
if cnt == 5:
break

Ответ:
1125003 467
1125006 97
1125009 17
1125011 3187
1125012 177

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

1⃣ def divisors(x):
Определение функции divisors, которая находит все делители числа x.


2⃣ div = []
Создание пустого списка для хранения делителей числа x.


3⃣ for j in range(1, int(x*0.5)+1):
Цикл от 1 до квадратного корня из x (оптимизация для поиска делителей).


4⃣ if x % j == 0:
Проверка, является ли j делителем x (если остаток от деления равен 0).


5⃣ div += [j, x // j]
Добавление в список делителей как j, так и x/j (парный делитель).


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


7⃣ cnt = 0
Инициализация счетчика найденных чисел.


8⃣ for x in range(1_125_000+1, 10*10):
Цикл по числам от 1_125_001 до 10**10.


0⃣ div = [j for j in divisors(x) if j != x and j % 10 == 7 and j != 7]
Создание списка делителей числа x, которые не равны самому x, оканчиваются на 7 и не равны 7.


1⃣0⃣ if len(div) > 0:
Проверка, есть ли подходящие делители в списке.


1⃣1⃣ print(x, min(div))
Вывод числа x и его минимального подходящего делителя.


1⃣2⃣ cnt += 1
Увеличение счетчика найденных чисел.


1⃣3⃣ if cnt == 5:
Проверка, найдено ли уже 5 чисел.


1⃣4⃣ break
Прерывание цикла, если найдено 5 чисел.


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

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


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


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


👩‍💻 Код решения:
R = []
for n, s in enumerate(open('9.csv'), 1):
M = [int(x) for x in s.split(';')]
if M == sorted(M):
if any(M.count(x) > 1 and sum(map(int, str(x))) % 2 == 0 for x in M):
R.append(n)
print(max(R))

Ответ: 6937

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

1⃣ R = []
- Создаём пустой список R для хранения номеров строк, которые будут соответствовать условиям.


2⃣ for n, s in enumerate(open('9.csv'), 1):
- Начинаем цикл по каждой строке файла 9.csv, считывая одновременно её содержание s и устанавливая номер строки n, начиная с 1.


3⃣ M = [int(x) for x in s.split(';')]
- Преобразуем строку s, разделённую по символу ;, в список целых чисел M.


4⃣ if M == sorted(M):
- Проверяем, является ли список M отсортированным по возрастанию.


5⃣ if any(M.count(x) > 1 and sum(map(int, str(x))) % 2 == 0 for x in M):
- Проверяем, есть ли в списке M повторяющиеся элементы x, сумма цифр которых чётная.


6⃣ R.append(n)
- Добавляем номер строки n в список R, если выполняются условия выше.


7⃣ print(max(R))
- Выводим максимальный номер строки из списка R, соответствующий требуемым условиям.


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

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