杭电ACM 2010

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:14:43
http://acm.hdu.edu.cn/showproblem.php?pid=2010

这是我做的杭电ACM的2010题,请大家帮我看看到底是哪里错了

#include <iostream>
using namespace std;

bool water(long n);

long main()
{
bool have;
long s1, s2, n;
while(cin >> s1 >> s2)
{
have = false;
for(n=s1;n<=s2;n++)
if(water(n))
{
have = true;
cout << n << " ";
}
if(!have)
cout << "no";
cout << endl;
}
return 0;
}

bool water(long n)
{
long sum, k;
sum = 0;
k = n;
while(k > 1)
{
sum += (k%10) * (k%10) * (k%10);
k /= 10;
}
return (sum == n);
}
请大家帮一下忙吧,先谢谢了
改成int main()之后还是不行啊
在我自己的机上运行也能得出结果,但把答案输进ACM时,它老是说我“Wrong Answer“,这到底是怎么回事呢?

while(k > 1)
{
sum += (k%10) * (k%10) * (k%10);
k /= 10;
}
把k>1改成k>0,否则153判断不出来

已测试,不再WA,而是PE。PE嘛,我就不管了,你自己看看吧,也许是空格的原因。

代码我测试过了,符合题意,答案没问题
唯一看上去不顺眼的就是long main(),还是改成int main()比较舒服。

可能是算法不一样吧。。。