您的位置:首页 > 其它

阶乘N!末尾0个数以及其最低位1的位置

2016-08-31 18:57 162 查看
首先是末尾的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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐