描述: |
如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数 (亦称为自恋性数),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; }
时间: 2024-10-07 06:08:38