标签:
| 描述: |
如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数 (亦称为自恋性数),1除外,如407 = 43+03+73就是一个阿姆斯特朗数。 试编程求n(n ≤ 65536)以内的所有阿姆斯特朗数。
接口说明 原型: int CalcArmstrongNumber(int n); 输入参数: int n: n ≤ 65536
返回值: n以内的阿姆斯特朗数的数量
|
| 知识点: |
工程环境请使用VS2005
|
| 题目来源: | 软件训练营 |
| 练习阶段: | 初级 |
题目很简单,关键是了解阿姆斯特朗数,代码放在这里存档~希望有高效的算法~
#include<iostream>
using namespace std;
int IsArmstrongNum(int nValue)
{
int i=0,j,sum,tmp,tmp1;
int n=nValue;
if(nValue==1)return 0;
//取得位数,位数最后用变量i表示
while(n)
{
i++;
n/=10;
}
//对各位数进行计算次方和
n=nValue;
sum=0;
while(n)
{
tmp=n%10;
tmp1=tmp;
for(j=1;j<3;j++)
tmp1*=tmp;
sum+=tmp1;
n/=10;
}
//次方和与给定数字相等,则是
if(sum==nValue)return 1;
return 0;
}
/*
功能: 求n(n ≤ 65536)以内的所有阿姆斯特朗数
原型:
int CalcArmstrongNumber(int n);
输入参数:
int n: n ≤ 65536
返回值:
n以内的阿姆斯特朗数的数量。
*/
int CalcArmstrongNumber(int n)
{
/*在这里实现功能*/
int count=0;
int i;
for(i=n;i>1;i--)
if(IsArmstrongNum(i))count++;
return count;
}
int main()
{
cout<<CalcArmstrongNumber(400)<<endl;
return 0;
}
标签:
原文地址:http://blog.csdn.net/wljwsj/article/details/45498339