HDU1013 Digital Roots
题目地址: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承载,得用字符串。
作者:洞庭散人
出处:http://phinecos.cnblogs.com/
posted on 2007-12-28 13:03 Phinecos(洞庭散人) 阅读(1167) 评论(1) 编辑 收藏 举报