//水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。
//计算所有N位水仙花数。
#include<iostream>
#include<cmath>
using namespace std;
int judgeN(int n)
{
int N=0;//位数
do
{
N++;
n/=10;
}while(n!=0);//得到n的位数
return N;
}
int sumn(int n,int N)
{
int sum=0;
int x=0;
for(int i=1;i<=N;i++)
{
x=n%10;
n/=10;
sum+=pow(x,N);
}
return sum;
}
int main()
{
cout<<"输入想要查询的水仙花数的最大值:";
int maxnum=0;//要查询数的范围
int N=0;//位数
int n=0;//要判断的数
int sum=0;//个位上的数字的N次幂之和
cin>>maxnum;
for(int n=0;n<=maxnum;n++)
{
N=judgeN(n);// 判断n是几位数
sum=sumn(n,N);//计算n每个位上的数字的N次幂之和
if(sum==n)
{
cout<<n<<endl;
}
}
return 0;
}
09-10
897