Задание 16. Информатика. Статград-22-4-1
- Просмотры: 155
- Изменено: 24 ноября 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\).
Решение:
Наивный перебор чисел для поиска ответа приведет к большим вычислениям. Заметим, однако, что функция \(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(4623618421, 0))
Ответ: 4623618421