По числу x определим p(x) как произведение его цифр. Рассмотрим последовательность x, p(x),
p(p(x))... Стойкостью x назовем индекс (начиная с 0) первого
однозначного числа в этой последовательности. Например, из 99 получим
последовательность 99, 9 * 9 = 81, 8 * 1 = 8. Стойкость числа 99 равна 2. По
заданному числу n определите его
стойкость.
Вход. Каждая
строка содержит одно целое число n (0
≤ n ≤ 2 * 109).
Выход. Для
каждого значения n выведите в
отдельной строке его стойкость.
Пример входа |
Пример выхода |
99 268 6 |
2 4 0 |
рекурсия
Последовательно
вычисляем значения x, p(x), p(p(x)), … до тех пор, пока очередное число в последовательности не
станет меньше 10. Функция p(x)
вычисляет произведение цифр числа x.
Реализация алгоритма
Функция p(x) вычисляет произведение цифр числа x.
int p(int x)
{
return
(x < 10) ? x : p(x / 10) * (x % 10);
}
Основная часть программы. Читаем входное значение n.
while(scanf("%d",&n)
== 1)
{
В переменной cnt
подсчитываем количество итераций n = p(n), это и будет стойкость исходного
числа.
int
cnt = 0;
while(n
> 9)
{
cnt++;
n = p(n);
}
Выводим ответ.
printf("%d\n",cnt);
}