第二届程序设计大赛 数字根
Time Limit:1000MS Memory Limit:65536K
Total Submit:1121 Accepted:810
Description
一个正整数(N <= 100000)的根是通过其各位数字之和求得。如果计算结果是个位数,那么这个正整数的根就是这个位数;如果计算结果是两位数或者是多位数,那么这些数的数字就需要重复累加,直到累加结果是一位数为止。
例如,正整数24,将其数字2和数字4累加得到6,因为6是个位数,所以正整数24的根就是6;例如,正整数39,累加3和9得到12,12不是个位数,所以需要重复累加,将1和2累加得到3,3是个位数,所以3是正整数39的根。
Input
输入将由多行正整数组成,每行一个正整数,数0表示输入结束。
Output
对应每行输入的正整数,输出每行其对应的根。
Sample Input
24
39
583
0
Sample Output
6
3
7
Source
#include<stdio.h>
int main()
{
int n, i = 0, j = 0, g, s, b, q, w, sw, sum, jie[100] = { 0 };
while (1)
{
scanf("%d", &n);
loop: sw = n / 100000;
w = n / 10000 - sw * 10;
q = n / 1000 - sw * 100 - w * 10;
b = n / 100 - sw * 1000 - w * 100 - q * 10;
g = n % 10;
s = n / 10 - sw * 10000 - w * 1000 - q * 100 - b * 10;
sum = sw + w + q + b + g + s;
if (sum >= 10)
{
n = sum;
goto loop;
}
else
{
jie[j] = sum;
}
j++;
if (n == 0)
break;
}
for (i = 0; i < j-1; i++)
{
printf("%d\n", jie[i]);
}
return 0;
}