水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
给出一个整数M,求 >= M的最小的水仙花数。
Input
一个整数M(10 <= M <= 1000)
Output
输出>= M的最小的水仙花数
Input示例
99
Output示例
153
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n;
int num;
int ans=0;
int ws=0;//记录位数
cin>>n;
num=n;
while(n){//记录位数
n/=10;
ws++;
}
while(true){//循环直到找到第一个数
int temp=num;
while(temp){//求出每位数的ws次方的和
int k=temp%10;
int nk=1;
for(int i=0; i<ws; i++){
nk*=k;
}
ans+=nk;
temp/=10;
}
if(ans==num){//判断是否为水仙花数
cout<<ans;
return 0;
}
temp=++num;//之前用的是num++然后一直没发现 。别像我一样大意
ws=0;
while(temp){//求出下一位数的位数
temp/=10;
ws++;
}
ans=0;/*一定记得要把ans置0*/
}
return 0;
}