【华为练习题】 阿姆斯特朗数(初级)
题目
如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数),1除外,如407 = 4^3+0^3+7^3就是一个阿姆斯特朗数。试编程求n(n ≤ 65536)以内的所有阿姆斯特朗数。
原型:
int CalcArmstrongNumber(int n);
输入参数:
int n: n ≤ 65536
返回值:
n以内的阿姆斯特朗数的数量
解答
#include <iostream>
using namespace std;
bool isArmstrongNumber(int n){
int sum = 0, tmp = n;
while (tmp)
{
sum += (int)pow(tmp % 10,3);
tmp /= 10;
}
return sum == n;
}
int CalcArmstrongNumber(int n){
int count = 0;
for (int i = 2; i < n; i++)
{
if (isArmstrongNumber(i))
{
count++;
}
}
return count;
}
int main()
{
int n;
cin >> n;
cout << CalcArmstrongNumber(n) << endl;
return 0;
}