思路:
末尾为0 ,说明是5的倍数,同时你不会真的去计算结果再得到0的数目,这样不可取。 所以想到从阶乘的数字下手, 比如 5!=120 有一位; 10! = 3628800 有2位0 ; 多计算几个发现规律 n/5 ; 对于数据小的时候满足 ,但大于 25时不满足,继续发现规律。 最后 得到下面的规律:
long k= n/5;
long x= k;
while(k>5){
x+=k/5;
k=k/5;
}
这里计算后满足要求,后续再用位操作看怎么实现,猜测会比这个操作要快。