题目描述
数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
输入格式
一个正整数(小于10^1000)
输出格式
一个数字,即输入数字的数根
个人理解
本题的重点在于该正整数是长整数 10^1000 非常大
因此先使用字符数组解决
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
char num[10001];
gets(num);
int len,i,tree=0,flag=0,n;
len=strlen(num);
for(i=0;i<len;i++)
{
tree+=num[i]-'0';
}
while(tree>=10)
{
len=tree;
tree=0;
do
{
n=len%10;
tree+=n;
len=len/10;
}
while(len);
}
printf("%lld\n",tree);
}