您当前的位置: 首页 >  算法

《算法竞赛入门经典》(第二版) 习题2-1 水仙花数(daffodil)

发布时间:2019-01-30 22:23:44 ,浏览量:0

习题2-1 水仙花数(daffodil)

输出100~999中的所有水仙花数。若三位数满足ABC=A3+B3+C3,则称其为水仙花数。例如153 = 13 + 53 + 33,所以153是水仙花数。

方法一:
for(int a=1;a<10;a++) { for(int b=0;b<10;b++) { for(int c=0;c<10;c++) { if(a*100+b*10+c==a*a*a+b*b*b+c*c*c) { printf("%d \n",a*100+b*10+c); } } } } return 0; 

对于第一种方法,三层for循环,除了第一层要执行9次之外,剩下的都要执行10次,那么if判断语句就执行了900次,用计时器的话时间很短,但如果继续增加嵌套循环的层数,每增加一层,判断语句执行次数变大10倍。

方法二:
for(int i=100;i<1000;i++) { int m=i; int a=i/100%10,b=i/10%10,c=i/1%10; if(m==a*a*a+b*b*b+c*c*c) { printf("%d \n",i); } } return 0; 

对于第二种方法,if判断语句执行了900次,但是比方法一多了三步分解运算,每个分解运算也要执行900次,不过用计时器的话跟方法一差不多,如果增大上界的话,上界扩大十倍,循环体执行次数增加1000次。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    109966博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3191s