杭电ACM 1013

来源:百度知道 编辑:UC知道 时间:2024/06/24 11:09:02
http://acm.hdu.edu.cn/showproblem.php?pid=1013

#include <iostream>
using namespace std;

int Root(int k);

int main()
{
int n;
while(cin >> n)
{
if(0 == n)
break;
while(n >= 10)
n = Root(n);
cout << n << endl;
}
return 0;
}

int Root(int k)
{
int sum;
sum = 0;
while(k > 0)
{
sum += k % 10;
k = k / 10;
}
return sum;
}

这个程序在我的机上运行都能输出正确的结果,但一交上去就是“Wrong Answer”了,我检查了很久也不知到底是哪里错了,请大家帮我看看到底是哪里错了,先谢谢了。

#include <iostream>
#include <string>
using namespace std;

int Digit(int n)
{
int digit=0;
while(true)
{
digit=0;
while(n)
{
digit+=n%10;
n/=10;
}
if(digit<10) return digit;
n=digit;
}
}
int main()
{
int digit, sum, i;
string s;
while(cin>>s)
{
sum=0;
for(i=0; i<s.size(); ++i)
sum+=s[i]-'0';
if(sum==0) break;
digit=Digit(sum);
cout<<digit<<endl;
}
return 0;
}

一楼正解
注意题目没说输入的整数在int范围之内