思路
先把i和i的立方和都转换为字符串,然后再从尾部开始比较
也可以用分位的思想
#include <iostream>
#include <string>
using namespace std;
long long sum;
int ans;
int main()
{
for(int i=0;i<10000;i++)
{
sum=i*i*i;
if(i<10)
{
if(sum%10==i)ans++;
}
else if(i<100)
{
if(sum%100==i)ans++;
}
else if(i<1000)
{
if(sum%1000==i)ans++;
}
else if(i<10000)
{
if(sum%10000==i)ans++;
}
}
cout<<ans;
return 0;
}
注意,如果我的i开int类型,得到的答案是28
如果开long long类型得到的答案就是37,37是正确答案。
错误原因
可以改成下面这样的: