题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1013
#include <iostream>
#include <string>
using namespace std;
void DigitRoot(int n)
{
int tmp;
int sum = 0;
while (n!=0)
{
tmp = n%10;
sum += tmp;
n = n/10;
}
if(sum>=0&&sum<=9)
{
cout<<sum<<endl;
return;
}
else
{
DigitRoot(sum);
}
}
int main(int argc, char *argv[])
{
string strNum;
int i,num;
while(cin>>strNum&&strNum!="0")
{
num = 0;
int len = strNum.length();
for (i=0;i<len;++i)
{
num += strNum[i]-'0';
}
DigitRoot(num);
}
return 0;
}
就是输入要注意下,正整数可能很大,不能直接用int承载,得用字符串。
本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2007/12/28/1018311.html,如需转载请自行联系原作者