首页 > 代码库 > 树根,函数

树根,函数

                                                                   数根

题目描述
我们通过把一个正数N的所有数字求和S来计算这个数的“数根”,如果累加的和为个位数,则这个数S即为N的“数根”;如果是两位和两位以上的数,那么重复这种累加求和的步骤,直到结果是个位数为止。 举例来说,对于正数N=24,将数字2和4相加得到6,因为6是个位数,所以6就是24的“数根”。再考虑N=39,将数字3和9相加得到12,因为12不是个位数,重复上面的计算,将数字1和2相加得到3,则3是个位数也就是39的“数根”了。
输入
输入数据中包含了若干个正数,一行一个,输入以“0”结束。
输出
对于每一个输入的正数,分行输出其“数根”。 [translated by B2L]
样例输入
24
39
0
样例输出
6
3
提示
输入的正数很长,有可能大大超过了长整型能表示的范围。

#include<iostream>

#include<string.h>
using namespace std;
int t;
int su(int sum)
{
t=0;
    while(sum)
    {
      t+=sum%10;
      sum/=10;
    }
if(t>=10)
 return su(t);
    else 
return t;
}
int main()
{
    int n,sum;
    char x[1000];
    while(cin>>x&&x[0]!=‘0‘)
    {
        sum=0;
        for(int i=0;i<strlen(x);i++)
        {
            sum+=x[i]-‘0‘;
        }
        cout<<su(sum)<<endl;
    }
}