51Nod_1015 水仙花数
http://www.51nod.com/Challenge/Problem.html#!#problemId=1015
题目
水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。给出一个整数M,求 >= M的最小的水仙花数。
输入
一个整数M(10 <= M <= 1000)
输出
输出>= M的最小的水仙花数
样例输入
99
样例输出
153
分析
可通过本地计算得出水仙花数,然后按条件输出即可
C语言程序
/* 打表
#include<stdio.h>
int power(int x,int n)
{
int res=1;
while(n--)
res*=x;
return res;
}
int Isright(int n)
{
int cnt=0,sum=0,m=n,temp;
while(m){
cnt++;
m/=10;
}
m=n;
while(m){
temp=m%10;
sum+=power(temp,cnt);
m/=10;
}
return sum==n;
}
int main()
{
int i;
for(i=100;i<=9999;i++)
if(Isright(i))
printf("%d ",i);
return 0;
}
通过本地计算得出水仙花数有 153 370 371 407 1634
*/
#include<stdio.h>
int main()
{
int m,n=0;
scanf("%d",&m);
if(m<=153)
n=153;
else if(m<=370)
n=370;
else if(m<=371)
n=371;
else if(m<=407)
n=407;
else if(m<1634)
n=1634;
printf("%d\n",n);
return 0;
}