Питон 25 задание егэ как решать
Перейти к содержимому

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

  • автор:

Программы для решения задач ЕГЭ по информатике

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

Перечень тем и источников заданий

  • Задание 5. Анализ алгоритмов для исполнителей
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков
    • Поляков

    25 ЗАДАНИЕ ЕГЭ ИНФОРМАТИКА PYTHON

    25 задание ЕГЭ по информатике на Python — это задачи, которые могут быть связаны с программированием, анализом данных или решением задач определённого типа.

    Примером задачи на решение уравнения может быть следующий код:

    Этот код выведет на экран значение 22.

    Задача на анализ данных может выглядеть следующим образом:

    import pandas as pd
    data = pd.read_csv(‘data.csv’)
    print(data.head())

    Этот код выводит первые несколько строк таблицы данных из файла data.csv.

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

    numbers = [3, 6, 1, 9, 2]
    max_number = numbers[0]
    for number in numbers:
    if number > max_number:
    max_number = number
    print(max_number)

    Этот код выводит на экран число 9, которое является максимальным значением в списке.

    Задание 25 // ЕГЭ по информатике 2022

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

    Задания №25 на маски за 15 минут! — Информатика ЕГЭ 2023 — Умскул

    Задание №25. Делители и их поиск — Информатика ЕГЭ 2022 — Умскул

    Задание 25 // КЕГЭ по информатике 2023

    Задание 25 — ЕГЭ по информатике — ДЕМО-2023

    ЗАДАНИЕ 25 ЗА 1 МИНУТУ — ИНФОРМАТИКА ЕГЭ — УМСКУЛ

    Стрим №16. ЗАДАНИЕ 25. Программирование. ЕГЭ по информатике 2023

    BLGPG-881EE49377B2-24-04-22-01

    Новые материалы:

    • Как разделить кортеж python
    • Python время выполнения программы
    • Приватные методы python
    • Python номер буквы в алфавите
    • Python xlwings документация
    • Настройка nvim для python
    • Английский для программистов python
    • Python как создать переменную без значения
    • Float object is not subscriptable python ошибка
    • Для пакета python pip не найден кандидат на установку
    • Python следующий элемент списка
    • Круговая диаграмма xlsxwriter python

    Python. Задачи

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

    Для некоторых задач требуется скачать тестовые файлы, которые должны быть использованы для тестирования решения. Файлы следует сохранять в вашем рабочем каталоге. В решениях пособия используется каталог c:\work.

    Задачи для самостоятельного решения

    В файле записаны слова по одному в каждой строке. Вывести все слова максимальной длины по одному в каждой строке.

    В файле записаны слова по одному в каждой строке. Вывести все слова из одной буквы, затем из двух и т.д., пока не будут выведены все слова.

    Дан список из целых чисел. Для каждого входящего в список числа вывести сколько раз оно встречается в списке. Если число встречается в списке несколько раз, то вывести его только один раз. Также вывести количество различных чисел в списке.

    Задана логическая функция F(a, b) = ¬a ∨ b. Вывести таблицу истинности функции F(a, b). Необходимо для каждого набора аргументов вычислить и вывести значение функции.

    Пользователь вводит натуральное число N. Вывести все такие значения среди чисел 1..N, запись которых совпадает с последними цифрами их квадрата. Например 6, 36.

    Вывести все натуральные из диапазона [1000, 1100], в записи которых нет одинаковых цифр.

    Заполнить двумерный массив (таблицу) чисел размером M x N, так чтобы числа от 1 до M⋅N шли в нем по возрастанию «ходом быка»: «бык» начинает ход в левом верхнем углу и идет по строке направо, затем делает шаг вниз и по второй строке идет справа налево, в третьей строке снова слева направо и т.д. Вывести заполненную таблицу.

    Текстовый файл состоит не более чем из 1000000 символов X, Y и Z. Определить и вывести максимальное количество идущих подряд одинаковых символов.

    Текстовый файл состоит не более чем из 1000000 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.

    Пользователь вводит четыре числа. Найти и вывести наибольший общий делитель этих чисел.
    Вывести все простые числа из диапазона [1546300, 1546400].

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

    Вывести всех «близнецов» (так называются простые числа, разность между которыми равна двум) из диапазона 2..N, где число N вводит пользователь.

    Дан список целых чисел, найти элементы с максимальным и вторым по величине значениями.
    [-2, 4 , 6, -3, 7, 9, 5, 8, 0, -1]

    Подсчитать сумму всех положительных элементов списка и количество всех отрицательных элементов.
    [-2, 4 , 6, -3, 7, 9, 5, 8, 0, -1]

    Проверить упорядоченность и порядок (возрастание или убывание) введенного пользователем списка из 10 элементов.

    Выполнить сортировку списка, введенного пользователем, по возрастанию методом поиска наименьшего элемента.

    У натурального числа, введенного пользователем, найти и вывести наименьший делитель больше 1.
    Разложить натуральное число, введенное пользователем, на множители.
    Отсортировать массив целых чисел, введенных пользователем, методом «пузырька».
    Отсортировать список из целых чисел, введенных пользователем, методом простых вставок.

    Целочисленный список из 10 элементов вводит пользователь. Элементы списка могут принимают значения от 0 до 1000. Найти и вывести минимальное значение среди элементов списка, которые четные и делятся на 3.

    Целочисленный список из 10 элементов вводит пользователь. Подсчитать и вывести сумму всех отрицательных элементов списка, которые делятся на 5 и не делятся на 10. Если таких элементов нет, то вывести сообщение об этом.

    Целочисленный список из 10 элементов вводит пользователь. Элементы списка могут принимать значения от 0 до 100 — сумма баллов за год за выполнение домашних заданий по информатике учащимися. Для получения положительной оценки необходимо было набрать 40 баллов. Найти и вывести минимальный балл среди учащихся, получивших положительную оценку.

    Целочисленный список из 10 элементов вводит пользователь. Пользователь также вводит число X. Найти и вывести минимальный индекс элемента, равного X, или сообщение, что такого элемента нет.

    Целочисленный список из 10 элементов вводит пользователь. Найти и вывести сумму наибольшей возрастающей последовательности подряд идущих элементов. Если таких последовательностей больше, чем одна, то вывести сумму первой из них.

    Рассматривается множество целых чисел, принадлежащих числовому отрезку [1016; 7937], которые делятся на 3 и не делятся на 7, 17, 19, 27. Найдите количество таких чисел и максимальное из них.

    Рассматривается множество целых чисел, принадлежащих числовому отрезку [2047; 9532], которые делятся на 5 и не делятся на 6, 10, 16, 27. Найдите количество таких чисел и максимальное из них.

    Рассматривается множество целых чисел, принадлежащих числовому отрезку [3052; 7445], которые делятся на 4 или 5 и не делятся на 7, 9, 13, 23. Найдите количество таких чисел и максимальное из них.

    Рассматривается множество целых чисел, принадлежащих числовому отрезку [3052; 7445], которые делятся на 3 и 4 и не делятся на 8, 11, 13. Найдите количество таких чисел и минимальное из них.

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

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

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

    Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
    Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

    Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Администратор хочет сэкономить место на диске для хранения архивов и для этого выбирает 4 наибольших по объему архивов и удаляет их, тем самым сэкономив место на диске. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей, определите сэкономленное администратором место.

    Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите минимальное число пользователей, чьи файлы нельзя сохранить в архиве..

    Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.

    Имеется набор данных, состоящих из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 6 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — минимально возможную сумму, соответствующую условиям задачи.

    Гоночная трасса состоит из двух основных дорог и нескольких переездов, позволяющих перейти с одной дороги на другую. На всех участках, включая переезды, движение разрешено только в одну сторону, поэтому переезд возможен только с дороги A на дорогу B. Гонщик стартует в точке A0 и должен финишировать в точке BN. Он знает, за какое время сможет пройти каждый участок пути по каждой дороге, то есть время прохождения участков A0A1, A1A2, …, AN-1AN, B0B1, B1B2, …, BN-1BN. Время прохождения всех переездов A0B0, A1B1, …, ANBN одинаково и известно гонщику. Необходимо определить, за какое минимальное время гонщик сможет пройти трассу.

    На вход программы поступает последовательность из n целых положительных чисел. Рассматриваются все пары элементов последовательности ai и aj, такие что i aj (первый элемент пары больше второго; i и j — порядковые номера чисел в последовательности входных данных). Среди пар, удовлетворяющих этому условию, необходимо найти и напечатать пару с максимальной суммой элементов, которая делится на m = 120. Если среди найденных пар максимальную сумму имеют несколько, то необходимо вывести последнюю их них.

    На вход программы поступает последовательность из N целых положительных чисел. Известно, что все числа в последовательности различны. Необходимо составить программу, которая подсчитывает количество пар различных элементов последовательности, произведение которых делится на 51. Элементы пары не обязательно должны стоять в последовательности рядом, порядок элементов в паре не важен.

    Дед Мороз и Снегурочка приходят на детские утренники с мешком конфет. Дед Мороз делит конфеты поровну между всеми присутствующими детьми (детей на утреннике никогда не бывает больше 100), а оставшиеся конфеты отдает Снегурочке. Снегурочка каждый раз записывает в блокнот количество полученных конфет. Если конфеты разделились между всеми детьми без остатка, Снегурочка ничего не получает и ничего не записывает. Когда утренники закончились, Деду Морозу стало интересно, какое число чаще всего записывала Снегурочка. Дед Мороз и Снегурочка — волшебные, поэтому число утренников N, на которых они побывали, может быть очень большим. Вывести число, которое Снегурочка записывала чаще всего.

    Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, находящихся на расстоянии не меньше 10 (разница в индексах элементов должна быть 10 или более). Необходимо определить количество пар, произведение чисел в которых кратно 10.

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

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

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

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

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

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

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

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

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

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

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

    count=0 for i in range(700001, 800000): m=0 a=[] for j in range(2, int(i**0.5)+1): if i%j==0: a.append(j) b=i//j if j!=b: a.append(b) if len(a)>=1: a.sort() m=a[0]+a[-1] if m%10==8: print(i, m) count = count + 1 if count == 5: break 

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

Для каждого числа i заводим искомую переменную m и список a, где будем хранить все делители этого числа, не считая 1 и самого числа. Затем, с помощью ещё одного цикла for перебираются числа с 2 до корня числа i (включительно).

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

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

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

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

Таким образом, нам достаточно пройтись до корня числа включительно, чтобы найти все делители числа i. Мы идём от 2, значит, единица и само число не рассматривается.

Если переменная j является делителем, то мы её заносим в список a. Сразу ищем «брата» b делителя j. Если «брат» b и переменная j не равны друг другу (равны они могут быть, если из числа i извлекается корень, например 16 = 4*4), то заносим переменную b так же в список a. Нет смысла заносить в список a одинаковые делители.

После того, как закончился цикл j, в списке a будут все делители числа i, кроме единицы и самого числа.

Если там есть хотя бы один делитель, то, значит, имеется максимальный и минимальный делитель. Мы сортируем список a, чтобы все делители были в порядке возрастания, т.к. изначально они не были упорядочены.

Находим число m. Это сумма максимального и минимального делителя. Первый элемент a[0] — это минимальный делитель. Последний элемент a[-1] — это максимальный делитель.

Если число, m подходит по условию, то мы печатаем число i и m.

Счётчик count нужен, чтобы распечатать первые пять чисел.

700005 233338
700007 100008
700012 350008
700015 140008
700031 24168

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

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

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

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

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

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

def Pr(x): for i in range(2, int(x**0.5)+1): if x%i==0: return False return True count=0 for i in range(550001, 1000000): a=[] for j in range(2, int(i**0.5) + 1): if i%j==0: a.append(j) b=i//j if j!=b: a.append(b) if len(a)>=1: a.sort() if not(Pr(a[-1])): count=count+1 print(i, a[-1]) if count==6: break 

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

Остальное похоже на предыдущую задачу.

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

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

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

import math for i in range(258274, 258298): a=[] for j in range(1, int(math.sqrt(i))+1): if i%j==0: a.append(j) b=i//j if j!=b: a.append(b) if len(a)==4: a.sort() print(a[2], a[3])

Здесь для каждого числа 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] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе само число и его наибольший нетривиальный делитель. Найденные числа расположите в порядке возрастания.

import math for i in range(4234679, 10157813): if int(math.sqrt(i))**2 == i: a=[] for j in range(2, int(math.sqrt(i))+1): if i%j==0: a.append(j) b=i//j if j!=b: a.append(b) if len(a)==3: a.sort() print(i, a[2])

Как у нас могут быть три различных нетривиальных делителя, когда делители идут, как мы выяснили, парами? Это может быть, когда существует целый корень из этого числа. Тогда в паре два числа будут одинаковыми (√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.

i=12347 #Вместо звёздочки ноль разрядов if i%141==0: print(i, i//141) #Вместо звёздочки один разряд for x in '0123456789': s = '1234' + x + '7' i=int(s) if i%141==0: print(i, i//141) #Вместо звёздочки два разряда for x in '0123456789': for y in '0123456789': s = '1234' + x + y + '7' i=int(s) if i%141==0: print(i, i//141) #Вместо звёздочки три разряда for x in '0123456789': for y in '0123456789': for z in '0123456789': s = '1234' + x + y + z + '7' i = int(s) if i%141==0: print(i, i//141)

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

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

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

Второй способ через fnmatch

Функция fnmatch() модуля fnmatch проверяет, соответствует ли строка имени файла шаблонной строке, возвращая True или False .

from fnmatch import * s = ['Привет','пакет','приток','перемена'] for x in s: if fnmatch(x,'п*е?'): print(x,'yes') else: print(x,'no')

Строки Привет и пакет соответствуют шаблону (маске) п*е?

* — это любая группа символов (в том числе пустая)

? — ровно один любой символ (пустоты быть не может)

from fnmatch import * for i in range(141, 10**8+1, 141): if fnmatch(str(i), '1234*7'): print(i, i//141)
1234737 8757
12341307 87527
12342717 87537
12344127 87547
12345537 87557
12346947 87567
12348357 87577
12349767 87587

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *