Digital RootsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 91251 Accepted Submission(s): 28397 http://acm.hdu.edu.cn/showproblem.php?pid=1013 Problem Description The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.
Input The input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer value of zero.
Output For each integer in the input, output its digital root on a separate line of the output.
Sample Input 24 39 0
Sample Output 6 3 |
题意:把一个数每位上的数相加,若为个位数输出,否则重复过程。
代码:
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int del(int n)
{
int sum=0;
while(n)
{
sum+=n%10;
n/=10;
}
if(sum>9)
del(sum);
else
return sum;
}
int main()
{
char s[100005];
while(cin>>s)
{
int n=strlen(s);
if(s[0]=='0'&&n==1)
break;
int sum=0;
for(int i=0;i<n;i++)
{
sum+=s[i]-'0';
}
//cout<<sum<<endl;
if(sum>9)
cout<<del(sum)<<endl;
else
cout<<sum<<endl;
}
return 0;
}