【发布时间】:2021-05-06 06:18:57
【问题描述】:
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
bool check(ll num)
{
ll temp=num;
ll sum=0;
while(num!=0)
{
ll rem=num%10;
sum+=pow(rem,3);
num/=10;
}
if(sum==temp)
return true;
else
return false;
}
int main()
{
ll num;
cin>>num;
if(check(num))
cout<<"It is a Armstrong number"<<endl;
else
cout<<"Not a Armstrong number"<<endl;
return 0;
}
当第二次迭代中 num 等于 153 时,rem 的值为 5,但是当我将其放入 pow 函数时,它给了我 124 但 5 pow 3 等于 125 谁能告诉我是什么问题
【问题讨论】:
-
无关:
return sum == temp;将比check函数末尾的四行版本更具可读性。 -
我不明白,你程序中唯一的
pow()函数正在执行pow(rem,5),所以第二次迭代的值应该是pow(5,5),即3125。整个过程你到底在哪里做pow(5,3)? -
@Arsenic srry 是战俘 (rem,3)
-
@paddy 是的,我没看到,谢谢你的帮助
标签: c++ data-structures integer long-integer pow