Задание 16. Информатика. Статград-22-4-2

Просмотры: 207
Изменено: 25 ноября 2024

Обозначим частное от деления целочисленного натурального числа \(a\) на натуральное число \(b\) как \( a\, \mathrm{div} \, b\), а остаток как \( a \bmod b\). Например, \( 13 \, \mathrm{div} \, 3 = 4\), \( 13 \bmod 3 = 1\).
Алгоритм вычисления значения функции \( F(a, \, b)\), где \(a\) и \(b\) — целые неотрицательные числа, задан следующими соотношениями:

\( F(0, \, b) = b\);
\( F(a, \, b) = F(a \, \mathrm{div} \, 10, \, 10 b + (a \bmod 10 ))\), если \(a > 0\).

Укажите наименьшее значение \(a\), для которого \( F(a, \, 0) = 1392781243 \).

Решение:

Наивный перебор чисел для поиска ответа приведет к большим вычислениям. Заметим, однако, что функция \(F(a, \, 0)\) записывает число \(a\) в обратном порядке. В этом легко убедиться, запуская код, например, для чисел вида \(1234\) (на выходе будет 4321). Кроме того, \( F(12340, 0) = F(1234000, 0) = 4321 \).

Python


def F(a, b):
    if a == 0:
        return b
    else:
        return F(a // 10, 10*b+a%10)

print(F(3421872931, 0))

Ответ: 3421872931