For a positive integer n, let f (n) denote the sum of the digits of n when represented in base 10. It is easy to see that the sequence of numbers n, f (n), f (f (n)), f (f (f (n))),... eventually becomes a single digit number that repeats forever. Let this single digit be denoted g (n).
For example, consider n = 1234567892. Then:
f(n) = 1+2+3+4+5+6+7+8+9+2 = 47
f(f(n)) = 4 + 7 = 11
f(f(f(n))) = 1 + 1 = 2
Therefore, g(1234567892) = 2.
Each line of input contains a single positive integer n at most 2,000,000,000. Input is terminated by n = 0 which should not be processed.
For each such integer, you are to output a single line containing g(n).
2 11 47 1234567892 0
2 2 2 2
#include <iostream>
typedef long long ll;
using namespace std;
ll f(ll n)
{
ll sum=0,ans;
while(n>0)
{
sum=sum+n%10;
n/=10;
}
if(sum>=10)ans=f(sum);
else ans=sum;
return ans;
}
int main()
{
ll n;
while(~scanf("%lld",&n)&&n!=0)
{
ll ans=f(n);
printf("%lld\n",ans);
}
return 0;
}