HDOJ-2010 水仙花数

Problem Description
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
 

Input

输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
 

Output

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
 

Sample Input

100 120
300 380
 

Sample Output

no
370 371
 
代码实现:
 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     int n,m,i,a,b,c,flag;
 6     while(scanf("%d%d",&m,&n)!=EOF)
 7     {
 8         flag=0;
 9         for(i=m;i<=n;i++)
10         {
11             a=i/100;
12             b=i%100/10;
13             c=i%100%10;
14             if(pow(a,3)+pow(b,3)+pow(c,3)==i)
15             {
16                 if(flag==1) printf(" ");
17                 printf("%d",i);flag=1;
18             }
19         }
20         if(flag==0) printf("no
");
21         else
22             printf("
");
23     }
24     return 0;
25 }

1.用flag标记会容易解决问题。开始总是Presentation Error,何来在讨论区发现大家都是行尾多了个空格,当然最后也是利用flag解决。

原文地址:https://www.cnblogs.com/hhccdf/p/4347605.html