水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
给出一个整数M,求 >= M的最小的水仙花数。
Input
一个整数M(10 <= M <= 1000)
Output
输出>= M的最小的水仙花数
Input示例
99
Output示例
153
<span style="font-size:18px;">#include<cstdio> #include<cmath> int num[11000]; void Init() { int i,b,sum,n,j; for(i=10;i<=10000;++i) { sum=0,j=2; while(pow(10,j)<=i) ++j; n=i; while(n) { b=n%10; sum+=pow(b,j); n/=10; } if(sum==i) num[i]=1; else num[i]=0; } } int main() { Init(); int m; while(~scanf("%d",&m)) { for(;m<=10000;++m) { if(num[m]) { printf("%d\n",m); break;; } } } return 0; }</span>