关于1000!有多少个零的问题

   记得2011年9月27日在深圳市豆游网络科技有限公司参加一个笔试,其中有一个编程题目:写出计算1000!的结果中有多少个零?

   他想考你什么呢?我觉得应该是这两方面,一方面是数据类型及其范围,另一方面是算法和编写代码的能力。

    因为之前在网上看到过此题目,大家的想法都差不多,核心是:1000!有多少个2和5。有多少个2和5的组合,就有多少个零。

    这种算法我觉得没太多的争议,但是,有一点,是我想说的,也是后来那位面试官提醒的,可以优化下,怎么优化呢?

    想想,一个数被2整除和被5整除,哪个概率更大呢?你懂得

     所以,这个程序就更加简洁了,如下:

#include<stdio.h>
void main()
{
      int i,k,c5=0;  

      for(i=5;i<1000;i+=5)      //此处i+=5,又一次优化了程序
      {
           k=i;          
           do                         // do.....while,计算一个数其有多少个因子5
             {
                 c5++;
                 k/=5;
             }while((k%5)==0);
       }

   printf("1000!共有%d个0\n",c5);

    你懂了吗?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值