Питон 25 задание егэ как решать

от admin

ЕГЭ по информатике 2023 — Задание 25 (Делимость чисел)

Всем привет! Добрались мы до 25 задания из ЕГЭ по информатике 2023.

Рассмотрим типовые задачи, а так же новые формулировки 25 задания из ЕГЭ по информатике 2023.

Приступаем к первой классической задаче.

Задача (ЕГЭ по информатике, Демо 2022)

Пусть M – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то значение M считается равным нулю.

Напишите программу, которая перебирает целые числа, бо́льшие 700 000, в порядке возрастания и ищет среди них такие, для которых значение M оканчивается на 8. Выведите первые пять найденных чисел и соответствующие им значения M.

Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем – значение М. Строки выводятся в порядке возрастания найденных чисел.

Количество строк в таблице для ответа избыточно.

ЕГЭ по информатике демоверсия 2022 - задание 25

На ЕГЭ по информатике 2023 удобно писать программы на языке Python.

В данной программе перебираются числа в цикле for, начиная с 700001.

Переменная b — считается наибольшим делителем числа i. Затем, с помощью ещё одного цикла for перебираются числа с 2 до корня числа i (включительно). Ищем тем самым наименьший делитель.

Если до корня числа включительно не встретился ни один делитель, значит, у числа нет делителей, кроме 1 и самого числа.

ЕГЭ по информатике демоверсия 2022 - задание 25 поиск делителей

Пусть у нас есть число A. Если у этого числа есть делитель d1, то он находится до корня этого числа. А вот то число (так же делитель d4), на которое умножается d1, чтобы получить A, будет находиться после корня A.

Получается, что у каждого делителя есть своя пара. У единицы — это само число. Причём один делитель из пары находится до корня, другой после корня. Исключением будет тот случай, когда из числа А извлекается целый корень. Тогда для этого корня не будет пары (парой и будет само это число √A * √A = A).

Таким образом, первый найденный делитель будет являться наименьшим делителем. А вот делительный, который находится в паре с наименьшим делителем, будет наибольшим.

После того, как мы нашли наименьший делитель (он будет сидеть в переменной j) и наибольший делитель b, выходим из второго цикла for.

Если переменная b осталась равна нулю, то, значит, у числа i нет указанных делителей, и переменная M должна равняться 0. Если b не равна нулю, то M=j+b.

Проверить, на что оканчивается число, можно узнав остаток от деления числа на 10.

Переменная count следит, чтобы было распечатано ровно 5 чисел, которые удовлетворяют условию задачи.

Ответ:

700005 233338
700007 100008
700012 350008
700015 140008
700031 24168

Напишите программу, которая перебирает целые числа, большие 550 000, в порядке возрастания и ищет среди них такие, для которых наибольший натуральный делитель, не равный самому числу, не является простым числом.

Программа должна найти и вывести первые 6 таких чисел и соответствующие им значения упомянутых делителей.

Формат вывода: для каждого из 6 таких найденных чисел в отдельной строке сначала выводится само число, затем упомянутый делитель. Строки выводятся в порядке возрастания найденных чисел.

Например, для числа 105 наибольший натуральный делитель 35 не является простым, для числа 15 наибольший натуральный делитель 5 — простое число, а для числа 13 такого делителя не существует.

ЕГЭ по информатике демоверсия 2022 - задание 25

Здесь мы ищем наибольший делитель числа, как и в прошлом решении.

Чтобы проверить число, является ли оно простым, напишем функцию Pr(). Там мы проходим до корня числа. Если не встретился не один делитель, значит, число простое — возвращаем True. Если до корня хотя бы один делитель встретили — возвращаем False.

Ответ:

550002 275001
550004 275002
550005 183335
550008 275004
550010 275005
550011 183337

Задача (Ровно 4 различных делителя)

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [258274; 258297], числа, имеющие ровно 4 различных делителя. Выведите для каждого найденного числа два наибольших делителя в порядке возрастания.

Здесь для каждого числа i заводим массив a, где будем сохранять все его делители. Идём как всегда до корня. Если мы нашли делитель, мы добавляем его в массив a c помощью команды append и ищем его «брата». Второй делитель («брат») не должен равняться самому делителю j, т.к. нам сказали, что все делители должны быть различны. Одинаковые делители j и b могут получится, если из нашего числа i извлекается целый корень. Ведь для делителя √i является парой этот же делитель ( √i* √i=i).

После прохождения внутреннего цикла (с переменной j) в массиве a будут сидеть все делители числа i. Если их ровно 4, то сортируем массив a и выводим на экран два наибольших.

Ответ:

15193 258281
1427 258287
1493 258289
36899 258293
51659 258295

Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Найдите все натуральные числа, принадлежащие отрезку [4234679; 10157812] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе само число и его наибольший нетривиальный делитель. Найденные числа расположите в порядке возрастания.

Как у нас могут быть три различных нетривиальных делителя, когда делители идут, как мы выяснили, парами? Это может быть, когда существует целый корень из этого числа. Тогда в паре два числа будут одинаковыми (√i* √i = i). Поэтому в этой задаче нас интересуют числа из которых извлекается елый корень.

Если этим рассуждением не воспользуемся, то программа будет считать очень долго, потому что здесь диапазон и сами числа очень большие.

Далее, решаем, как и в прошлый раз.

Ответ:

4879681 103823
7890481 148877

Задача (ЕГЭ по информатике, 20.06.22)

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

— символ «?» означает ровно одну произвольную цифру;

— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.

Например, маске 123*4?5 соответсвуют числа 123405 и 12300405.

Среди натуральных чисел, не превышающих 10 8 , найдите все числа, соответствующие маске 1234*7, делящиеся на 141 без остатка.

В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им результаты деления этих чисел на 141.

Здесь самый главный момент заключается в том, что есть верхняя граница 10 8 . Т.е. самое большое число, которое нужно рассмотреть 1234[999]7 8 = 100000000. Нижняя граница тоже задана, когда вместо звёздочки ни одной цифры не будет 12347.

Таким образом, нужно рассмотреть, когда вместо звёздочки ноль разрядов, один разряд, два разряда и три разряда.

Каждый разряд перебираем как цифры (символы). Формируем строку s, а затем её переводим в тип int.

Когда два разряда или три разряда нужно перебирать строку с помощью вложенных циклов.

ЗаPython’ил ЕГЭ на сотку или почему Python поможет на ЕГЭ

Доброго времени суток каждому жителю Хабрвилля! Давненько я не писал статей! Пора это исправить!

В сегодняшней статье поговорим о насущной для многих выпускников школ теме — ЕГЭ. Да-да-да! Я знаю, что Хабр — это сообщество разработчиков, а не начинающих айтишников, но сейчас ребятам как никогда нужна поддержка именно сообщества. Ребят опять посадили на дистант. Пока не ясно на какой период, но уже сейчас можно сказать, что ЕГЭ по информатике будет на компьютерах и его можно зарешать при помощи языка Python.

Вот я и подумал, чтобы не получилось как в песне, стоит этим заняться. Я расскажу про все задачи первой части и их решения на примере демо варианта ЕГЭ за октябрь.

Всех желающих — приглашаю ниже!

Быстрый перевод из системы в систему

В Python есть интересные функции bin() , oct() и hex() . Работают данные функции очень просто:

Вывод в интерпретационном режиме

Вывод в интерпретационном режиме

Как вы видите, выводится строка, где 0b — означает, что число далее в двоичной системе счисления, 0o — в восьмеричной, а 0x — в шестнадцатеричной. Но это стандартные системы, а есть и необычные.

Давайте посмотрим и на них:

Данная программа будет работать при переводе из десятичной системы счисления в любую до 9, так как у нас нет букв. Давайте добавим буквы:

Способ объёмен, но понятен. Теперь давайте используем тот же функцию перевода из любой системы счисления в любую:

Вызвав функцию вывода print(convert_base(156, 16, 10)) мы переведём 156 из 10 в 16 систему счисления, а введя print(convert_base(’23’, 21, 4)) переведёт 23 из 4-ичной в 21-ичную систему (ответ: B).

Читать:
Как делать надо pascalabc луна

Задача 2

Все задания беру из первого октябрьского варианта (он же вариант № 9325894) с сайта Решу.ЕГЭ.

Решение данной задачи совсем простое: банальный перебор.

Нам вывелась вся таблица истинности (1 = True, 0 = False). Но это не очень удобно. Обратите внимание, что в задании, функция равно 0, так и давайте подправим код:

Далее — простой анализ.

Задача 5

Данная задача легко решается простой последовательностью действий в интерпретационном режиме:

Задача 6

Перепечатали и получили ответ:

Задача 12

В очередной раз, просто заменим слова на код:

Задача 14

Компьютер железный, он всё посчитает:

Задача 16

Опять же, просто дублируем программу в python:

Задача 17

Задача с файлом. Самое сложное — достать данные из файла. Но где наша не пропадала?!

Немного пояснений. Функция with() открывает файл считывает данные при помощи функции read() и закрывает файл. В остальном — задача стандартна.

Задача 19, 20 и 21

Все три задачи — задачи на рекурсию. Задачи идентичны, а вопросы разные. Итак, первая задача:

Пишем рекурсивную функцию и цикл перебора S:

Немного пояснений. В рекурсивной функции существует 3 переменные x — число камней в первой куче, y — число камней во второй куче, p — позиция. Позиция рассчитывается по таблице:

Рубрика «ЕГЭ Задание 25»

ЕГЭ информатика 25 задание разбор, теория, как решать.

Создание программы для обработки целочисленной информации, (В) — 2 балла

Е25.22 которые соответствуют маске 1?7246*1 и при этом без остатка делятся на 4173

Маска числа – это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр. Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415. Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 1?7246*1 и при этом без …

Е25.21 соответствующие маске 1?2139*4, делящиеся на 2023 без остатка

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

Е25.20 M(k) нельзя представить в виде произведения трёх различных натуральных чисел

Пусть M(k) = 9 000 000 + k, где k – натуральное число. Найдите пять наименьших значений k, при которых M(k) нельзя представить в виде произведения трёх различных натуральных чисел, не равных 1. В ответе запишите найденные значения k в порядке возрастания. чно. Открытый вариант ИНФОРМАТИКА КИМ ЕГЭ 2022 — задание №25

Е25.19 найдите все числа, соответствующие маске 12345?7?8, делящиеся на число 23 без остатка.

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

Е25.18 Пусть М — сумма минимального и максимального натуральных делителей целого числа

Пусть М — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то значение М считается равным нулю. Напишите программу, которая перебирает целые числа, большие 220 000, в порядке возрастания и ищет среди них такие, для которых значение М оканчивается на 4. Выведите первые …

Е25.17 Пусть M(N) – пятый по величине делитель натурального числа N без учёта самого числа и единицы

Пусть M(N) – пятый по величине делитель натурального числа N без учёта самого числа и единицы. Например, M(1000) = 100. Если у числа N меньше 5 различных делителей, не считая единицы и самого числа, считаем, что M(N) = 0. Найдите 5 наименьших натуральных чисел, превышающих 460 000 000, для которых M(N) > 0. В ответе …

Е25.16 10 простых чисел наиболее приближенные к числу 10000000

Напишите программу, которая находит 10 простых чисел наиболее приближенные к числу 10000000 (10 миллионов). Причем 5 найденных чисел должны быть меньше заданного числа, остальные 5 чисел-больше. Найденные числа расположите в порядке возрастания. В качестве ответа выведите пары чисел — расстояние от найденного числа до 10000000 и само число. Например, для числа 50 ответ должен быть …

Е25.15 Пусть M (N) – сумма двух наибольших различных натуральных делителей

Пусть M (N) – сумма двух наибольших различных натуральных делителей натурального числа N, не считая самого числа. Если у числа N меньше двух таких делителей, то M (N) считается равным 0. Найдите 5 наименьших натуральных чисел, превышающих 12 000 000, для которых 0 < M (N) < 10 000. В ответе запишите найденные значения M …

Е25.14 Найдите все натуральные числа, N, принадлежащие отрезку [200 000 000; 400 000 000]

Найдите все натуральные числа, N, принадлежащие отрезку [200 000 000; 400 000 000], которые можно представить в виде N = 2m · 3n, где m – чётное число, n – нечётное число. В ответе запишите все найденные числа в порядке возрастания. Ответы: СтатГрад Вариант ИН2010501 26.04.2021– задание №25

Е25.13 Найдите 5 наименьших натуральных чисел, превышающих 200 000 000,

Пусть M (N) – произведение 5 наименьших различных натуральных делителей натурального числа N, не считая единицы. Если у числа N меньше 5 таких делителей, то M (N) считается равным нулю. Найдите 5 наименьших натуральных чисел, превышающих 200 000 000, для которых 0 < M (N) < N. В ответе запишите найденные значения M (N) в …

Разбор 25 задания на Python | ЕГЭ по информатике 2022

Экспресс-курс по подготовке к ЕГЭ-2022: Задание 25 — Обработка целых чисел. Решаем при помощи языка программирования Python типовые задания. Задания на разбор: Все уроки по Python: Задания взяты отсюда: И отсюда: —— Telegram: Группа в ВК: #егэ #информатика #разбор

Никита Ежов

Перед тем как смотреть, пробовал сделать последнее задание сам. Получились неверные ответы, переписал код с видео, получились такие же неверные ответы. А я лишний 0 добавил в начальное число, а код свой уже стёр и не помню что писал, жаль не проверить)

Никита Ежов

"10-15 секунд", и я, который сижу жду минутами второе задание, хахахах

Jolypunk
SOSISKAkiller
genius wand

В задании с номером по порядку, если не ошибаюсь, нужно вывести его номер в порядке отрезка, то есть i — 7178551 + 1.

Quick Flick Team

Иван Викторович, а формулировка "в порядке возрастания" говорит о написании чисел с пробелом или прямо подряд (без разделителей)?

Normist

Спасибо за разбор 25 задания!

Spiralem

Функцию для простых чисел ведь можно было также оптимизировать тем, чтобы она искала не до самого числа, а лишь до корня?

Майк Шадрин

Во второй задаче вы говорите, мол код будет выполнятся дольше, из-за бОльшего диапазона. Но это можно исправить. Если из числа извлекается квадратный корень, то количеством его делителей будет нечетное число, ежели иначе, то четное. Почему? Потому что для корня из числа обратный делитель — само это число: sqrt(36) = 6. 36/6 == 6. Поэтому для него мы не записываем обратный делитель в список делителей. В задаче нужно найти делители чисел, которые имеют 5 различных делителей, то есть делители таких чисел, из которых извлекается корень. Поэтому вполне логично прописать вот такую проверку, дабы оптимизировать наш сценарий:
for i in range(244143,1367822):
if i**0.5 != int(i**0.5):
continue
P.S.
то есть мы говорим, что числа, из которых корень не извлекается, нас не интересуют

Mikis Aslanov

В задаче с функцией prost() оператор break стоит безо всякого условия в цикле после внешнего if. Переменная d успевает принять единственное значение 2, а остальные не перебираются. Повезло, что ответ напечатался правильный. break нужно "загнать" внутрь if, т.е. подвинуть под внутренний if.
Также в самой функции prost() перебор делителей лучше тоже делать до корня.

Спасибо! Очень полезно!!

MouZye Channel

Сначала готовился по курсам платным в онлайн школах, платил бешеные деньги, а тут случайно наткнулся на этот канал. Я буквально пересмотрев пару раз видео о разборах заданий ЕГЭ понял как их решать. Все понятно и доходчиво. Иван Викторович, спасибо огромное!

Похожие статьи