这个面试问题基本偶尔会问到,java开发面试时候会问到,机器学习时候也问到过。解法其实很简单
一.入门题:99的阶乘多少个零?
答:因为2足够多,我们根本不用看2有多少个(2、4、6.....比5多的多),故看因子5的个数。5的倍数的数有19个(5,10,15,……95),其中25的倍数有3个(这个因子有两5,比5因子要多一个数5),所以共有5的因子一共22个。100的阶乘结果后面有22个0。
这是非常好理解的。
二.拔高题:2015!阶乘多少个0
答案:(从上思路)
计算1到2015里多少个5,25,125,625
1、2015÷5=403
2、2015÷25=80.6取整得80
3、2015÷125=16.12取整得16
4、2015÷625=3.224取整得3
答案是:403+80+16+3=502
WHY?解答一下为啥加起来就行了:一个5的因子有403个0,;25的因子有80个(包括2个5,比因子5多一个);125的因子包括16个(3个5,扔掉5包含的、25包含的个数、多了一个5);625的因子包括了4个5,(丢掉5/25/125的包含个数多了一个5)。所以,
403+80+16+3=502
三、扩展题:1.2015!/2000!
答:(2000!)*2001*....2015/2000!,也就是2001*....2015,3个5,3个0
2.2015!-2000!
答:0个,大家自己想就行了。
这四个题目是常见的面试题,基本不会有别的面试方法了。