题目:
题目描述
数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。
如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。
比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。
再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
输入格式
一个正整数,小于101000
输出格式
一个数字,即输入数字的数根。
输入样例 复制
24
输出样例 复制
6
思路:
对数字的每一位相加直到不大于9即可 ,因为输入的整数可能会非常大,所以我们用string来接收 对接收到的字符串位相加 将结果传入,递归对其进行位相加直到小于等于9
代码:
#include<iostream>
using namespace std;
int ans=0;
int fun(int x)
{
if(x/10==0)
{
cout<<x<<endl;
}
else
{
ans=0;
while(x)
{
ans+=x%10;
x/=10;
}
if(ans/10!=0)
if(ans/10==0)
cout<<ans<<endl;
fun(ans);
}
}
int main()
{
string s;
cin>>s;
int sum=0;
for (int i=0;i<s.size();i++)
sum+=s[i]-'0';
fun(sum);
}