记得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);
}
你懂了吗?