e-olymp 8377. Стойкое число


Задача

По числу $x$ определим $p(x)$ как произведение его цифр. Рассмотрим последовательность $x$, $p(x)$, $p(p(x))$… Стойкостью $x$ назовем индекс (начиная с $0$) первого однозначного числа в этой последовательности. Например, из $99$ получим последовательность $99$, $9 · 9 = 81$, $8 ·  1 = 8$. Стойкость числа $99$ равна $2$. По заданному числу $n$ определите его стойкость.

Входные данные

Каждая строка содержит одно целое число $n (0 \leqslant n \leqslant 2 · 10^9)$.

Выходные данные

Для каждого значения $n$ выведите в отдельной строке его стойкость.

Решение

Опишем функцию $p(x)$, которая будет считать произведение цифр числа $x$. Для этого в функции заводим дополнительную переменную, например, $t$, равную единице, которую будем циклично домножать на остаток от деления $x$ на $10$, а $x$ уменьшать на разряд до тех пор, пока $x$ не попадёт в разряд единиц. Получившееся значение $t$ снова передаём в функцию $p(x)$ в качестве аргумента. Продолжим действия, описанные выше, до тех пор пока значение $t$ не будет находиться в разряде единиц. Индекс последней итерации функции и будет искомой стойкостью числа $x$.

Тесты

Ввод Вывод
1 99
268
6
2
4
0
2 796
1
100
5
0
1
3 2356951
53
9892
2
2
3

Код

Код для считывания строками

Код c-string

 

Ссылки

Related Images:

6 thoughts on “e-olymp 8377. Стойкое число

  1. Хорошо. Только обновите ссылки на код и решение. И отформатируйте название как у всех.
    Дал эту же задачу, как упражнение на строки. Попробуйте дополнить вариантами решения, которые будут работать не с числом, а с его десятичным представлением в виде строки.

    • Переменная result лишняя. Если нужно вернуть какое-то выражение, укладывать его предварительно в переменную смысла нет.
    • Строки у нас в двух вариантах. Один Вы сделали. Теперь сделайте через char *. Только давайте рекурсией, хорошо?
      • Вы излишне усложнили последнюю версиюю кода. Нет причины делать более сложной чем предыдущая.
      • И оформите, пожалуйста, название в таком же стиле как у остальных работ по задачам сайта e-olymp.com.
    • Код упростил, как Вы просили.

Добавить комментарий