Задание 25. Информатика. ЕГЭ. Шастин. 29.08.2024
- Просмотры: 145
- Изменено: 24 ноября 2024
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «\(?\)» означает ровно одну произвольную цифру;
– символ «\(*\)» означает любую последовательность цифр произвольной длины; в том числе «\(*\)» может задавать и пустую последовательность.
Например, маске \(123*4?5\) соответствуют числа \(123405\) и \(12300405\).
Среди натуральных чисел, не превышающих \(10^{10}\), найдите все числа, соответствующие маске \(21?3*145?5\) и делящиеся на \(2025\) без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на \(2025\).
Количество строк в таблице для ответа избыточно.
Решение:
C++
#include<iostream>
#include<string>
#include<fnmatch.h>
using namespace std;
int32_t main() {
long long n = 210314505;
int r = n % 2025;
n += r ? 2025 - r : 0;
for(; n < 10ll * 1000 * 1000 * 1000; n += 2025)
if (!fnmatch("21?3*145?5", to_string(n).c_str(), 0))
cout << n << " " << n / 2025 << " " << '\n';
}
Ответ:
\(2123214525 \,\, 1048501\)
\(2163714525 \,\, 1068501\)
\(2173114575 \,\, 1073143\)