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承载,得用字符串。

posted on 2007-12-28 13:03  Phinecos(洞庭散人)  阅读(1166)  评论(1编辑  收藏  举报

导航