水仙花数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
请判断一个数是不是水仙花数。
其中水仙花数定义各个位数立方和等于它本身的三位数。-
输入
-
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
输入0表示程序输入结束。
输出
-
如果n是水仙花数就输出Yes
否则输出No
样例输入
-
153 154 0
样例输出
-
Yes No
-
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
思路:分离出该数的个位,十位和百位,然后根据要求判断是不是水仙花数即可
#include<stdio.h>
int main()
{
int a,b,c;
int n;
while (scanf("%d",&n) != EOF && n != 0)
{
if (n < 100 || n > 999)
{
printf("No\n");
}
else
{
a = n % 10; //取个位
b = n / 10 % 10;//取十位
c = n / 100; //取百位
if (n == a*a*a + b*b*b + c*c*c)
{//如果是水仙花数
printf("Yes\n");
}
else
{
printf("No\n");
}
}
}
return 0;
}
当然,我们可以把所有的水仙花数求出来,然后判断输入的数是否在这些水仙花数里面。
#include<stdio.h>
int main()
{
int n;
while (1)
{
scanf("%d",&n);
if (n == 0)
{
break;
}
else
{
if (n == 153 || n == 370|| n == 371 || n == 407)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
}
return 0;
}