水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
给出一个整数M,求 >= M的最小的水仙花数。
Input
一个整数M(10 <= M <= 1000)
Output
输出>= M的最小的水仙花数
Input示例
99
Output示例
153
题解:暴力求解即可,需要自己写pow函数,cmath里的pow函数参数类型是浮点类型。
AC代码:
1 #include<iostream> 2 using namespace std; 3 int n; 4 int pow(int x,int y) 5 { 6 int h=x; 7 y--; 8 while(y>0) 9 { 10 x*=h; 11 y--; 12 } 13 return x; 14 } 15 int main() 16 { 17 cin>>n; 18 for(int i=n;i;i++) 19 { 20 int ans = 0; 21 int k = i; 22 int h = 0; 23 int l = i; 24 while(l>0) 25 { 26 h++; 27 l/=10; 28 } 29 while(k>0) 30 { 31 int g = k%10; 32 ans+=pow(g,h); 33 k/=10; 34 } 35 if(ans==i) 36 { 37 cout<<i<<endl; 38 break; 39 } 40 } 41 return 0; 42 }