您的位置:首页 > 其它

课后练习1-Armstrong数

2016-07-10 21:21 316 查看
/*
输入一个正整数,判断它是不是一个Armstrong数。
这里,若一个m位正整数n的各位数字的m次方之和等于m,则称n是一个Armstrong数。
例如:
3位数中的Armstrong数	153=1^3+5^3+3^3
4位数中的Armstrong数	1634=1^4+6^4+3^4+4^4
5位数中的Armstrong数	92727=9^5+2^5+7^5+2^5+7^5
*/
#include<iostream.h>
//函数split拆出n的各位数字一次放在数组d中,返回n的位数m
int split(long n,int d[])
{
int m=0;
while(n!=0)
{
d[m]=n%10;
m++;
n/=10;
}
return m;
}
//计算p=k^m的函数expnm
long expnm(int k,int m)
{
long p=1;
int i;
for(i=1;i<=m;i++)
p*=k;
return p;
}
//求各位数字的m次方之和的函数sum
long sum(int m,int d[])
{
long s=0;
int i;
for(i=0;i<m;i++)
s+=expnm(d[i],m);
return s;
}
//主函数
void main()
{
long n;							//定义变量n(长整数型)
int m,d[10];					//数组d用于保存n的各位数字
cout<<"请输入正整数的值 n=";	//将提示信息显示在屏幕上
cin>>n;
m=split(n,d);
if(n==sum(m,d))
cout<<n<<"是Armstrong数"<<endl;
else
cout<<n<<"不是Armstrong数"<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: