Задание 25. Программирование. Обработка целочисленной информации. ЕГЭ 2026 по информатике

За это задание ты можешь получить 1 балл. На решение дается около 30 минут. Уровень сложности: высокий.
Средний процент выполнения: 40.2%
Ответом к заданию 25 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).

Задачи для практики

Задача 1

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: — символ «?» означает ровно одну произвольную цифру; — символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательноcть. Среди натуральных чисел, не превышающих 10^9, найдите все числа, соответствующие маске 1234?57??, делящиеся на число 146 без остатка. В ответе запишите количество найденных чисел.

Решение
from fnmatch import fnmatch
for i in range(0,10**9,146):
    if fnmatch(str(i),'1234?57??'):
        print(i,i//146)


123405770 845245
123425772 845382
123435700 845450
123445774 845519
123455702 845587
123465776 845656
123475704 845724
123485778 845793
123495706 845861
Ответ: 9
Показать решение
Бесплатный интенсив

Задача 2

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
1) символ «?» означает ровно одну произвольную цифру;
2) символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задаватьи пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 108, найдите все числа, соответствующие маске 1?3?1*5?6, делящиеся на 629 без остатка.
В ответе запишите сумму результатов от деления найденных чисел на 629.
Количество строк в таблице для ответа избыточно.

Решение
from fnmatch import fnmatch

s = 0
for x in range(0, 10 ** 8, 629):
    if fnmatch(str(x), '1?3?1*5?6'):
        s += x // 629
print(s)
Ответ: 53598
Показать решение
Бесплатный интенсив

Задача 3

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

Формат вывода: для каждого из 5 таких найденных чисел запишите их в порядке возрастания через пробел.

Решение

Приведём решение номера на языке программирования Python. Можно решить стандартным путём:

def m(n):
    for i in range(2, n):
        if n % i == 0:
            if i != 6 and i % 10 == 6:
                return True
    return False


number = 600_000
k = 0
while k < 5:
    number += 1
    if m(number):
        print(number, end=" ")
        k += 1
Ответ: 600002 600006 600008 600012 600016
Показать решение
Бесплатный интенсив

Задача 4

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

Напишите программу, которая перебирает целые числа, большие 452 023, в порядке возрастания и ищет среди них такие, для которых значение M при делении на 7 даёт в остатке 4. Вывести первые 3 найденных чисел.

Формат вывода: для каждого из 3 таких найденных чисел запишите их в порядке возрастания через пробел.

Решение

Приведём решение номера на языке программирования Python

def m(n):
    divisors = []
    for i in range(2, n):
        if n % i == 0:
            divisors.append(i)
    if len(divisors) > 1:
        return min(divisors) + max(divisors)
    return 0


number = 452_023
k = 0
while k < 5:
    number += 1
    if m(number) % 7 == 4:
        print(number)
        k += 1

Ответ: 452036 452049 452050

Ответ: 452036 452049 452050
Показать решение
Бесплатный интенсив

Задача 5

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

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

Формат вывода: для каждого из 3 таких найденных чисел запишите их в порядке возрастания через пробел.

Решение

Приведём решение номера на языке программирования Python. Можно решить стандартным путём:

def m(n):
    divisors = []
    for i in range(2, n):
        if n % i == 0:
            divisors.append(i)
    return len(divisors)


number = 124_987
k = 0
while k < 3:
    number += 1
    if m(number) == 3:
        print(number, end=" ")
        k += 1

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

def m(n):
    divisors = []
    for i in range(2, n):
        if n % i == 0:
            divisors.append(i)
    return len(divisors)


number = 124_609
z = 707
k = 0
while k < 3:
    number += z
    z += 2
    if m(number) == 3:
        print(number, end=" ")
        k += 1

Но и этот способ можно ускорить, если знать, что до корня из числа должен встретиться ровно 1 корень

def m(n):
    divisors = []
    for i in range(2, int(n ** 0.5)):
        if n % i == 0:
            divisors.append(i)
    return len(divisors)


number = 124_609
z = 707
k = 0
while k < 3:
    number += z
    z += 2
    if m(number) == 1:
        print(number, end=" ")
        k += 1

Ещё один способ заключается в том, чтобы перебирать не квадраты чисел, а числа до возведения в квадрат. Таким образом вычисляем корень из 124 987 и двигаемся от числа 354

def m(n):
    divisors = []
    for i in range(2, int(n ** 0.5)):
        if n % i == 0:
            divisors.append(i)
    return len(divisors)


number = 354
k = 0
while k < 3:
    new_number = number ** 2
    if m(new_number) == 1:
        print(new_number, end=" ")
        k += 1
    number += 1
Ответ: 130321 279841 707281
Показать решение
Бесплатный интенсив
Показать еще
  • Без воды
  • Ламповая атмосфера
  • Крутые преподаватели

ЕГЭ 2026: бесплатный курс
по информатике

На бесплатном демо-курсе ты:
  • Узнаешь всё про кодирование: что это такое и как происходит
  • Познакомишься с Условием Фано: как оно примняется и почему важно
  • Научишься считать колиечтсво информации и сколько под неё нужно выделить памяти
Получи бесплатный демо-доступ
Оставь заявку и займи место
на бесплатном курсе Турбо ЕГЭ
Нажимая на кнопку «Отправить», вы принимаете положение об обработке персональных данных.