ФИПИ · ЕГЭ · Информатика · Задание 25

Задание 25. Программа: целочисленная информация

49 заданий открытого банка ФИПИ: впишите ответ, при затруднении — подсказка; после ответа — разбор по шагам.

0
Решено
0
Правильно
0%
Точность

Задания открытого банка ФИПИ «Задание 25. Программа: целочисленная информация» (информатика). Ответ вписывается так же, как в бланк ЕГЭ: число, слово или цифры подряд, без пробелов; если в ответе два числа — через пробел, как в таблице ответа (по строкам).

Неофициальная копия. Условия заданий — из открытого банка заданий ФИПИ (fipi.ru); номер у каждого задания открывает его в банке ФИПИ. Ответы, подсказки, разборы и рисунки подготовлены reknow.ru. Нашли ошибку — нажмите «Сообщить об ошибке» у задания.

Серия: 0

О теме

Задание 25 ЕГЭ по информатике. Умение создавать собственные программы (10–20 строк) для обработки целочисленной информации. На странице — 49 заданий открытого банка ФИПИ: ответ проверяется сразу, есть подсказка и подробный разбор.

Примеры заданий

Это несколько заданий из тренажёра, остальные — в тренажёре в начале страницы.

ФИПИ № 19743B ↗

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

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

Например, для числа 298 М = 2 + 149 = 151.

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

 

 

Показать ответ
Ответ: 5100138 94449 5100793 64646 5100976 318813 5101624 57975 5102876 1275721
Решение.
  1. Для каждого n > 5 100 000 раскладываем на простые множители. Если n простое, собственных простых делителей нет и M = 0.
  2. Программа:
    def primes(n):
        res, d = [], 2
        while d * d <= n:
            if n % d == 0:
                res.append(d)
                while n % d == 0:
                    n //= d
            d += 1
        if n > 1: res.append(n)
        return res
    
    n, found = 5100000, 0
    while found < 5:
        n += 1
        p = [q for q in primes(n) if q != n]
        m = p[0] + p[-1] if p else 0
        if m > 50000 and str(m) == str(m)[::-1]:
            print(n, m)
            found += 1
  3. Например, 5100138 = 2 · 33 · 94447: M = 2 + 94447 = 94449 — палиндром.
  4. Найдены: 5100138 (94449), 5100793 (64646), 5100976 (318813), 5101624 (57975), 5102876 (1275721).
  5. Ответ: 5100138 94449 5100793 64646 5100976 318813 5101624 57975 5102876 1275721.
ФИПИ № 304763 ↗

Пусть R – сумма всех различных натуральных делителей целого числа.

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

 

Например, для числа 20 R = 1 + 2 + 4 + 5 + 10 + 20 = 42.

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

Показать ответ
Ответ: 500032 1070356 500035 606816 500039 501456 500050 949716 500052 1333696
Решение.
  1. Для каждого n > 500 000 считаем R — сумму всех делителей (включая 1 и n) — и проверяем последнюю цифру R % 10 == 6.
  2. Программа:
    def sigma(n):
        s, d = 0, 1
        while d * d <= n:
            if n % d == 0:
                s += d
                if d != n // d:
                    s += n // d
            d += 1
        return s
    
    n, found = 500000, 0
    while found < 5:
        n += 1
        r = sigma(n)
        if r % 10 == 6:
            print(n, r)
            found += 1
  3. Найдены: 500032 (1070356), 500035 (606816), 500039 (501456), 500050 (949716), 500052 (1333696).
  4. Ответ: 500032 1070356 500035 606816 500039 501456 500050 949716 500052 1333696.