hdu 2010 水仙花数
这个题目记得高中的NOI里面就有,看来经典的终归是经典那
如果对每个数对进行拆分可能会超时(尤其是比赛的时候),就想的竞赛中经典思想——以空间换时间,简单来说就是把三位数都给算一遍存储起来,是了就存1,不是存0,然后直接读入数据输出结果
也可能是见过,也可能是多想了一下,发现水仙花数只有四个(这个。。。),进一步优化程序。
1 #include<stdio.h>
2 int main()
3 {
4 int a[] = {153,370,371,407};
5 int m,n,i,flag;
6 while(scanf("%d%d",&m,&n)==2)
7 {
8 flag = 0;
9 for(i=0;i<4;i++)
10 {
11 if(a[i]>=m&&a[i]<=n)
12 {
13 if(!flag) printf("%d",a[i]); //flag两个作用
14 else printf(" %d",a[i]);
15 flag = 1;
16 }
17 }
18 if(flag) printf("\n");
19 else printf("no\n");
20 }
21 return 0;
22 }