水仙花数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
请判断一个数是不是水仙花数。
其中水仙花数定义各个位数立方和等于它本身的三位数。-
输入
-
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
输入0表示程序输入结束。
输出
-
如果n是水仙花数就输出Yes
否则输出No
样例输入
-
153 154 0
样例输出
-
Yes No
来源
- C语言课本习题改编 上传者
我的思考:确定语言
理解水仙花数,如何分离出个位,十位,百位
多组测试数据
n的范围需要写吗?
输入0测试结束
如果 否则 if语句
我的程序:
#include<stdio.h> int main(){ int a, b, c, n; //定义变量:个位,十位,百位,一个数 while(scanf("%d",&n)!=EOF&&n!=0){ //输入n和输入0表示程序结束 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; }
最优程序:
01.
#include<iostream>
02.
using
namespace
std;
03.
int
main()
04.
{
05.
int
a;
06.
while
(1)
07.
{
08.
cin>>a;
09.
if
(a==0)
break
;
10.
cout<<((a==153||a==370||a==371||a==407)?
"Yes"
:
"No"
)<<endl;
11.
}
12.
}
运行时间和内存一样为0和240;
从题意中获取内容
-
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)