Задание 25. Информатика. Демо 2024

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

Среди натуральных чисел, не превышающих \(10^{10}\), найдите все числа, соответствующие маске \(1?2157*4\), делящиеся на \(2024\) без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 2023.
Количество строк в таблице для ответа избыточно.

Решение:

Python


subs = [''] + [f'00{x}' for x in range(10)] + [f'0{x}' for x in range(100)] + [x for x in range(1000)]

nums = []

for s in subs:
    for d in range(10):
        n = int(f'1{d}2157{s}4')
        if n % 2024 == 0:
            nums.append((n, n // 2024))

nums.sort(key=lambda i: i[0])
print(*nums, sep='\n')

Ответ:
\(142157664\)    \(70236\)
\(1021575544\)    \(504731\)
\(1121571264\)    \(554136\)
\(1221577104\)    \(603546\)
\(1321572824\)    \(652951\)
\(1421578664\)    \(702361\)
\(1521574384\)    \(751766\)
\(1621570104\)    \(801171\)
\(1721575944\)    \(850581\)
\(1821571664\)    \(899986\)
\(1921577504\)    \(949396\)