Главная страница » Питон 25 задание егэ как решать

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

  • автор:

ЕГЭ по информатике 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.

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

задачи егэ по информатике на пары элементов массивов

Задачи егэ с номером 25 по информатике про подряд идущие пары элементов массива

В данной статье мы разберем решение задач с номером 25 из егэ по информатике на языке Python по теме подряд идущие пары элементов массива В этих задачах дается начало программы, по вводу массива и список переменных, которые можно использовать, необходимо подсчитать количество пар элементов массива, удовлетворяющих определенному условию. Напомним, что массив — это набор элементов одного типа с общим именем, к каждому элементу массива в Python можно обратиться по его индексу. Нумерация элементов массивов в Python начинается с 0.Если размер массива заранее не дан то нужно использовать следующую структуру в Python для объявления и заполнения его с клавиатуры. Подробно о работе с массивами в Python
a = []
n=int(input('введите длину массива'))
for i in range(0, n):
a.append(int(input()))
print(a)

В задачах на обработку данных массива в Python используется цикл for в котором мы перебираем все индексы и обращаемся к элементам массива по индексу используя переменную цикла. Напишем программу на Python, в которой вводится массив из целых чисел, и подсчитывает количество элементов, которые делятся на 2. В программе вводится переменная k, которая отвечает за подсчёт элементов, перед циклом подсчёта элементов она обнуляется. Внутри цикла перебора элементов массивов ставится условие на проверку чётности числа, если условие выполняется, то значение счётчика k увеличивается на 1.
if a[i] % 2==0:
k = k+1

Полная программа подсчёта чётных элементов в массиве на Python.
a = []
n = int(input("Введите длину массива"))
for i in range (n):
a.append (int(input()))
print (a)
k = 0
for i in range (n):
if a[i] % 2==0:
k = k+1
print ("Количество чётных элементов", k)
Если в задаче требуется проанализировать условие на пару соседних элементов массива, то в условии мы обращаемся к первому элементу пары имя массива[i], а ко второму элементу имя массива[i+1]. Чтобы не зайти за границы массива, в цикле перебора массивов в выражении range(граница – 1).
Для совместного выполнения условий на пару элементов массива используется логическая операция and. Пример программы, которая подсчитывает количество пар элементов массивов, сумма которых делится на 5, но не делится на 10 на Python. Это стандартная задача с номером 25 на экзамене егэ по информатике.
a = []
n = int(input("Введите длину массива"))
for i in range (n):
a.append (int(input()))
print (a)
k = 0
for i in range (n-1):
if ((a[i]+a[i+1]) % 5==0 and (a[i]+a[i+1]) % 10!=0):
k = k+1
print ("Количество нужных пар", k)
Для того, чтобы проверить, делится ли переменная на какое-то число, в условии используется такое выражение
переменная % число == 0
Например, чтобы проверить, что переменная a делится на 5, нужно записать
if (a % 5 == 0):
Для того, чтобы проверить, что переменная не делится, в условии используется такое выражение
переменная % число != 0
Например, чтобы проверить, что переменная не делится на 10, в условии используется такое выражение
if (a % 10 != 0):
Разберём еще один пример задачи с номером 25 из егэ по информатике на пару соседних элементов массива
Дан массив из 30 элементов. Элементы массива могут принимать целые значения от –100 до 100 включительно. Напишите программу на Python, которая подсчитывает количество пар элементов массива, произведение которых отрицательно, а сумма кратна 5.
a = []
n = int(input("Введите длину массива"))
for i in range (n):
a.append (int(input()))
print (a)
k = 0
for i in range (n-1):
if ((a[i]*a[i+1]) < 0 and (a[i]+a[i+1]) % 5==0):
k = k+1
print ("Количество нужных пар", k)

Перейти к содержанию курса по python

Полезно почитать по теме решение на python задач сномером 25 егэ по информатике на тему массивы
Решение задач на python на массивы с накопителем

ЕГЭ информатика 25 задание(python). Что не так в моей программе?

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

Например, в диапазоне [12; 15] ровно шесть различных натуральных делителей имеет число 12, поэтому для этого диапазона вывод на экране должна содержать следующие значения:

1 3 9 34739 104217 312651
Не знаю в чем причина. До этого абсолютно идентичная программа только с другими числами выводила все на ура

Задача №25. Написание фрагмента программы.

В задачах этого типа встречаются следующие основные алгоритмические (программные) блоки:

Перебор элементов массива

Для одномерного массива запускается цикл по всем его элементам.

Для двумерного массива – цикл в цикле по строкам и столбцам.

Для n-мерного массива – n вложенных циклов.

Перебор элементов массива, удовлетворяющих условию

Для перебора элементов массива, удовлетворяющих условию (например, только четных), в начале цикла устанавливается условие. Тогда все дальнейшие действия выполняются только при выполнении этого условия. Если же условие не выполняется, цикл переходит к следующему элементу массива.

Обмен местами элементов массива

Производится аналогично обмену значениями переменных. Если нужно поменять местами n-й и k-й элементы массива, то n-й элемент сохраняется в буферную переменную, затем значение k-го элемента копируется в n-й, а значение буферной переменной копируется в k-й элемент.

Поиск максимального (минимального) элемента массива

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

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

Вычисление суммы элементов массива

Сначала переменной, выделенной под хранение суммы, присваивается значение 0. Затем, при последовательном переборе элементов массива, значение суммы складывается со значением текущего элемента массива и становится новым значением суммы.

Вычисление произведения элементов массива

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

Вычисление среднего значения

При вычислении среднего значения выполняется вычисление суммы, а затем сумма делится на количество элементов массива.

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

Дан це­ло­чис­лен­ный мас­сив из 20 эле­мен­тов. Эле­мен­ты мас­си­ва могут при­ни­мать целые зна­че­ния от –10 000 до 10 000 вклю­чи­тель­но. Опи­ши­те на есте­ствен­ном языке или на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм, поз­во­ля­ю­щий найти и вы­ве­сти ко­ли­че­ство пар эле­мен­тов мас­си­ва, в ко­то­рых хотя бы одно число де­лит­ся на 3. В дан­ной за­да­че под парой под­ра­зу­ме­ва­ет­ся два под­ряд иду­щих эле­мен­та мас­си­ва. На­при­мер, для мас­си­ва из пяти эле­мен­тов: 6; 2; 9; –3; 6 – ответ: 4.

Ис­ход­ные дан­ные объ­яв­ле­ны так, как по­ка­за­но ниже на при­ме­рах для не­ко­то­рых язы­ков про­грам­ми­ро­ва­ния и есте­ствен­но­го языка. За­пре­ща­ет­ся ис­поль­зо­вать пе­ре­мен­ные, не опи­сан­ные ниже, но раз­ре­ша­ет­ся не ис­поль­зо­вать не­ко­то­рые из опи­сан­ных пе­ре­мен­ных.

Бей­сик

Python

DIM A (1 TO N) AS INTEGER

DIM I AS INTEGER,

J AS INTEGER,

K AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

# це­ло­чис­лен­ные пе­ре­мен­ные j и k

for i in range(0, n):

Пас­каль

Ал­го­рит­ми­че­ский язык

var

a: array [1..N] of integer;

i, j, k: integer;

begin

for i := 1 to N do

readln(a[i]);

нач

цел N = 20

цел­таб a[1:N]

цел i, j, k

нц для i от 1 до N

ввод a[i]

кц

Си

Есте­ствен­ный язык

int main() <

int a[N];

int i, j, k;

for (i = 0; i < N; i++)

return 0;

Объ­яв­ля­ем мас­сив A из 20 эле­мен­тов.

Объ­яв­ля­ем це­ло­чис­лен­ные пе­ре­мен­ные I, J, K.

В цикле от 1 до 20 вво­дим эле­мен­ты мас­си­ва A с 1-го по 20-й.

В ка­че­стве от­ве­та Вам не­об­хо­ди­мо при­ве­сти фраг­мент про­грам­мы (или опи­са­ние ал­го­рит­ма на есте­ствен­ном языке), ко­то­рый дол­жен на­хо­дить­ся на месте мно­го­то­чия. Вы мо­же­те за­пи­сать ре­ше­ние также на дру­гом языке про­грам­ми­ро­ва­ния (ука­жи­те на­зва­ние и ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер Free Pascal 2.6) или в виде блок-схемы. В этом слу­чае Вы долж­ны ис­поль­зо­вать те же самые ис­ход­ные дан­ные и пе­ре­мен­ные, какие были пред­ло­же­ны в усло­вии (на­при­мер, в об­раз­це, за­пи­сан­ном на есте­ствен­ном языке).

При­мер про­грам­мы на языке Пас­каль

for i := 1 to N-1 do

if (a[i] mod 3=0) or (a[i+1] mod 3=0) then

Дан це­ло­чис­лен­ный мас­сив из 30 эле­мен­тов. Эле­мен­ты мас­си­ва могут при­ни­мать целые зна­че­ния от 0 до 1000. Эле­мент мас­си­ва на­зы­ва­ет­ся хо­ро­шим, если это дву­знач­ное число, причём цифра в раз­ря­де де­сят­ков боль­ше, чем цифра в раз­ря­де еди­ниц. Опи­ши­те на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм, поз­во­ля­ю­щий найти и вы­ве­сти сумму всех хо­ро­ших эле­мен­тов мас­си­ва.

Ис­ход­ные дан­ные объ­яв­ле­ны так, как по­ка­за­но ниже. За­пре­ща­ет­ся ис­поль­зо­вать пе­ре­мен­ные, не опи­сан­ные ниже, но раз­ре­ша­ет­ся не ис­поль­зо­вать часть из них.

Бэй­сик

Пас­каль

DIM A(N) AS INTEGER

DIM I, J, S AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

var

a: array [1..N] of integer;

i, j, s: integer;

begin

for i:=l to N do

readln(a[i]) ;

Си

Ал­го­рит­ми­че­ский язык

void main()<

int a[N];

int i, j, s;

for (i=0; i < N; i++)

нач

цел N=30

цел­таб а[1:N]

цел i, j, s

нц для i от 1 до N

ввод а[i]

кц

В ка­че­стве от­ве­та Вам не­об­хо­ди­мо при­ве­сти фраг­мент про­грам­мы, ко­то­рый дол­жен на­хо­дить­ся на месте мно­го­то­чия. Вы мо­же­те за­пи­сать ре­ше­ние также на дру­гом языке про­грам­ми­ро­ва­ния (ука­жи­те на­зва­ние и ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Free Pascal 2.4) или в виде блок-схемы. В этом слу­чае вы долж­ны ис­поль­зо­вать те же самые ис­ход­ные дан­ные и пе­ре­мен­ные, какие были пред­ло­же­ны в усло­вии.

При­мер про­грам­мы на языке Пас­каль

for i:=1 to N do begin

if (10<=a[i]) and (a[ i ] <= 9 9) and

((a[i] div 10) > (a[i] mod 10) ) then s:=s+a[i];

Ты нашел то, что искал? Поделись с друзьями!

Благодарим за то, что пользуйтесь нашими материалами. Информация на странице «Задача №25. Написание фрагмента программы.» подготовлена нашими авторами специально, чтобы помочь вам в освоении предмета и подготовке к экзаменам. Чтобы успешно сдать необходимые и поступить в ВУЗ или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий. Также вы можете воспользоваться другими статьями из разделов нашего сайта.

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

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