Задание 25. Информатика. ЕГЭ. Демо-2025-2
- Просмотры: 166
- Изменено: 24 ноября 2024
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру; – символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске \(123*4?5\) соответствуют числа \(123405\) и \(12300405\). Среди натуральных чисел, не превышающих \(10^{10}\), найдите все числа, соответствующие маске \(3?12?14*5\), делящиеся на \(1917\) без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на \(1917\).
Количество строк в таблице для ответа избыточно.
Решение:
C++
#include<iostream>
#include<string>
#include<fnmatch.h>
using namespace std;
int32_t main() {
long long n = 30120145;
n += n % 1917 ? 1917 - n % 1917 : 0;
for(; n < 10ll * 1000 * 1000 * 1000; n += 1917)
if (!fnmatch("3?12?14*5", to_string(n).c_str(), 0))
cout << n << " " << n / 1917 << '\n';
}
Ответ:
\(351261495 \,\, 183235\)
\(3212614035 \,\, 1675855\)
\(3412614645 \,\, 1780185\)
\(3712414275 \,\, 1936575\)
\(3912414885 \,\, 2040905\)