[UVA11332]Summing Digits

Posted by John on 2016-01-12
Words 233 and Reading Time 1 Minutes
Viewed Times

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.

Input

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.

Output

For each such integer, you are to output a single line containing g(n).

Sample Input

2 11 47 1234567892 0

Sample Output

2 2 2 2

int main() { 
char s[11] = {0};
int len = 0;
while(gets(s) && s[0] != '0') {
//puts(s);
len = strlen(s);
while(1) {
if(len == 1) {
printf("%s\n",s);
break;
}
int temp = 0;
for(int i = 0 ; i < len ; ++i) {
temp += s[i] - '0';
}
//printf("temp %d\n",temp);
sprintf(s,"%d",temp);
//printf("* %s\n",s);
len = strlen(s);
//printf("* len %d\n",len);
}
memset(s,0,sizeof(s));
}
return 0;
}

>