Задание 25. Информатика. Демо 2024
- Просмотры: 171
- Изменено: 24 ноября 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\)