题目来源:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=39
描述
请判断一个数是不是水仙花数。
其中水仙花数定义各个位数立方和等于它本身的三位数。
输入
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
输入0表示程序输入结束。
输出
如果n是水仙花数就输出Yes
否则输出No
上传者
张云聪
分析:
1.是多组测试示例,以0位结束标志
2.求得每一位上的数字
3.进行立方和计算,判断是否和原数相等
4.三位数才是水仙花数
5.注意大小写
代码
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int a,b,i,j,k;
while(scanf("%d",&a)!=EOF)//如果该数不是零,进行判断是否是水仙花数
{
if(a)//该数不为0
{
k=a%10; //取得个位上的数字
i=a/100; //取得百位上的数字
j=a/10%10; //取得十位上的数字
if(pow(i,3)+pow(j,3)+pow(k,3)==a)//立方数的和是否与原数相等
printf("Yes\n"); //相等则该数是水仙花数,输出Yes
else printf("No\n"); //不相等则该数不是水仙花数,输出No
}
else break;//如果该数是0则结束
}
return 0;
}
样例输入
153
154
0
样例输出
Yes
No
运行结果: