- 首先是末尾的0的个数:
//这个实际上就是阶乘中含有的5的个数,如下:
//阶乘结尾0的个数
int tailZero(int n){
int count = 0;
for (int i = 0; i <= n; ++i){
while (i != 0 && i % 5 == 0){
count ++; //注意这里是++
i /= 5;
}
}
return count;
}
- 阶乘里面最后的1的位置:
//阶乘最后的1的位置
//实际上就是还有2这个质因子的个数,计算式子是这样的:
//N/2 + N/4 + N/8 + N/16
int lowest1(int n){
int ret = 0;
while (n){
n >>= 1;
ret += n;
}
return ret;
}