课后练习1-Armstrong数

来源:互联网 发布:好玩的页游 知乎 编辑:程序博客网 时间:2024/06/06 03:50
/*输入一个正整数,判断它是不是一个Armstrong数。这里,若一个m位正整数n的各位数字的m次方之和等于m,则称n是一个Armstrong数。例如:3位数中的Armstrong数153=1^3+5^3+3^34位数中的Armstrong数1634=1^4+6^4+3^4+4^45位数中的Armstrong数92727=9^5+2^5+7^5+2^5+7^5*/#include<iostream.h>//函数split拆出n的各位数字一次放在数组d中,返回n的位数mint split(long n,int d[]){int m=0;while(n!=0){d[m]=n%10;m++;n/=10;}return m;}//计算p=k^m的函数expnmlong expnm(int k,int m){long p=1;int i;for(i=1;i<=m;i++)p*=k;return p;}//求各位数字的m次方之和的函数sumlong 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;elsecout<<n<<"不是Armstrong数"<<endl;}

0 0
原创粉丝点击