求N!的二进制表示中最低位1的位置
2014-03-24 09:34
190 查看
判断一个二进制中最后一位是否为0,可以把这个二进制除以2,如果结果为0则把这个数向右移动了一位,否则说明这个数最后一位为1,无法整除2,。
所以这个问题可以变为N!中质因数2个个数,一个二相当于使其向左移动一位,非2的倍数相乘最后一位是1不变,因此只要判断里面质因数2的个数就可以了,其他不用管。
而N!中 1~N中能被2整除的N/2,能被4整除的N/4,能被8整除的N/8…………
所以可以的代码:
所以这个问题可以变为N!中质因数2个个数,一个二相当于使其向左移动一位,非2的倍数相乘最后一位是1不变,因此只要判断里面质因数2的个数就可以了,其他不用管。
而N!中 1~N中能被2整除的N/2,能被4整除的N/4,能被8整除的N/8…………
所以可以的代码:
int lowestOne(int n) { int ret = 0; while(n) { n >>= 4; ret +=n; } return ret; }
相关文章推荐
- 正整数的 二进制表示 中 从低位向高位 第1个0/1出现位置 的计算方法
- 求N!的二进制表示最低位的1的位置(从右向左数)
- 编程之美2――N!的二进制表示中最低位1的位置
- n! 的二进制表示中最低位1的位置
- 求N!的二进制表示中最低位1的位置?
- 求N!的二进制表示中最低位1的位置 ->求 N!的质因子2的个数
- C程序:n!的二进制表示中最低位1的位置
- 南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
- 编程之美2——N!的二进制表示中最低位1的位置
- 求N!的二进制表示中最低位1的位置。(编程之美)
- 求N!的二进制表示中最低位1的位置
- 编程之美 2.2阶乘中最低位0的个数&二进制表示中最低位1的位置
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?求N!的二进制表示中最低位1的位置。
- 求N!的二进制表示中最低位1的位置
- 编程之美---求N!的二进制表示中最低位1的位置
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 阶乘N!的二进制表示中最低位1的位置
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 阶乘中最低位0的个数&二进制表示中最低位1的位置
- 不要被阶乘吓倒(二进制表示中最低位1的位置 )