Having watched the last Harry Potter film, little Gerald also decided to practice magic. He found in his father's magical book a spell that turns any number in the sum of its digits. At the moment Gerald learned that, he came across a number n. How many times can Gerald put a spell on it until the number becomes one-digit?
The first line contains the only integer n (0 ≤ n ≤ 10100000). It is guaranteed that n doesn't contain any leading zeroes.
Print the number of times a number can be replaced by the sum of its digits until it only contains one digit.
0
0
10
1
991
3
In the first sample the number already is one-digit — Herald can't cast a spell.
The second test contains number 10. After one casting of a spell it becomes 1, and here the process is completed. Thus, Gerald can only cast the spell once.
The third test contains number 991. As one casts a spell the following transformations take place: 991 → 19 → 10 → 1. After three transformations the number becomes one-digit.
emmmm,这道题其实蛮简单
就是自己做的时候看到10的10万次就懵了
gets输入,int记录,在未成一个数字前不断循环。
特判 <10 的数
#include <iostream>
#include <cstdio>
#include <string.h>
#include <cstring>
using namespace std;
char a[1000002];
int main()
{
while(gets(a))
{
int l=strlen(a);
if(l==1)
{
cout<<"0"<<endl;
continue;
}
long long int n=0;
for(int i=0;i<l;i++)
{
n=n+a[i]-'0';
}
int totol=1;
while(n>=10)
{
int l=0;
int k=n;
for(int i=1;;i++)
{
if(k/10==0) {l++;break;}
else
{
k=k/10;
l++;
}
}
int sum=0;
int kk=n;
for(int i=1;i<=l;i++)
{
sum+=kk%10;
kk=kk/10;
}
n=sum;
totol++;
}
cout<<totol<<endl;
}
return 0;
}