一个整数M(10 <= M <= 1000)
输出>= M的最小的水仙花数
99
153
加油
#include <bits/stdc++.h>
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
int k[2000];
void Edge(){
mem(k);
for(int i=10;i<=99;i++){
int x=i/10,y=i%10;
if(x*x+y*y==i)
k[i]=1;
}
for(int i=100;i<=999;i++){
int x=i%10,y=i/100,z=(i/10)%10;
if(x*x*x+y*y*y+z*z*z==i)
k[i]=1;
}
for(int i=1000;i<=2000;i++){
int x=i%10,y=i/1000,z=(i/100)%10,l=(i/10)%10;
if(x*x*x*x+y*y*y*y+z*z*z*z+l*l*l*l==i)
k[i]=1;
}
}
int main(){
int n;
Edge();
while(cin>>n){
for(int i=n;i<=2000;i++){
if(k[i]==1)
{
cout<<i<<endl;
break;
}
}
}
return 0;
}
原文:http://www.cnblogs.com/ruruozhenhao/p/7495898.html