编程之美---求N!的二进制表示中最低位1的位置
来源:互联网 发布:印度山地师 知乎 编辑:程序博客网 时间:2024/06/06 08:27
问题描述:
求N!的二进制表示中最低位1的位置。例如:给定N=3,N!=6,那么N!的二进制表示(1010)的最低位1在第二位。
问题求解:
这个问题等同于求N!含有质因数2的个数,因为二进制最低位为0代表是偶数,可以被2整除,如果为1则代表是奇数,不能被2整除,其内部也不会包含质因数2,所以质因数2的个数就是二进制表示中最低位1后面的0个数。
所以,答案等于N!含有质因数2的个数加1 。
N!中含有质因数2的个数,等于[N/2]+[N/4]+[N]/8……
([N/K]等于1,2,3,…,N中能被k整除的数的个数)
#include <iostream>using namespace std;int lowestOne(int N){ int ret = 0; while(N) { N >>= 1; ret += N; } return ret+1;}int main(){ int N=3; cout << lowestOne(N) << endl; return 0;}
运行结果:
2
0 0
- 编程之美---求N!的二进制表示中最低位1的位置
- 编程之美-2.2、n阶乘的二进制表示中最低位1的位置
- 编程之美2——N!的二进制表示中最低位1的位置
- 编程之美 2.2阶乘中最低位0的个数&二进制表示中最低位1的位置
- 编程之美2.2 求N!中最低位1 的位置
- 求N!的二进制表示中最低位1的位置
- 求N!的二进制表示中最低位1的位置
- 求N!的二进制表示中最低位1的位置
- 求N!的二进制表示中最低位1的位置 ->求 N!的质因子2的个数
- 编程之美->N!最低位1的位置
- 求N!的二进制表示中最低位1的位置解答题中一个小证明
- 求N!的二进制表示最低位的1的位置(从右向左数)
- 求n的阶层二进制最低位1的位置
- 求N!二进制最低位1的位置
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?求N!的二进制表示中最低位1的位置。
- C程序:n!的二进制表示中最低位1的位置
- 阶乘N!的二进制表示中最低位1的位置
- 求正整数的二进制表示中最低位1的位置
- 线程池的介绍
- 24点经典算法
- 嵌入式数据库Sqlite3.3.6移植教程
- 台大机器学习听课笔记---Random Forest 10-1
- 关于alert样式的问题
- 编程之美---求N!的二进制表示中最低位1的位置
- 多线程的同步
- 音效codec芯片解决方案
- tcmalloc安装及使用
- 关于smallest eigenvector的理解
- poj 1077 Eight A*解八数码问题
- DeleteObject()
- LeetCode217:Contains Duplicate
- 第12周项目-阅读程序