编程之美读书笔记-不要被阶乘吓倒
2016-09-04 12:02
281 查看
本文转载自N!含有质因子2的个数
题目:求N!的二进制表示中最低位1的位置。
解析:这个问题实际上等同于求N!含有质因数2的个数,等于[N/2]+[N/4]+[N/8]+[N/16]+…。
设N的二进制表示中1的数目为f(x),则易知
。另设g(x)=x,
。
按照递归函数的思想,所有的可计算函数都是可以表示成递归的,下面将恒等函数用递归的形式表示出来。
上面的递归形式并不是最终的,但这种形式有利于我们的推导,注意这里的除法是整除的意思。最终可以得到下面的式子。
(2)式的最后一项 ,恰好表示x的二进制表示中1的个数。综上,原命题得证。
题目:求N!的二进制表示中最低位1的位置。
解析:这个问题实际上等同于求N!含有质因数2的个数,等于[N/2]+[N/4]+[N/8]+[N/16]+…。
#include<iostream> using namespace std; int lowestOne(int N) { int Ret = 0; while (N) { N >>= 1; Ret += N; } return Ret+1; } int main() { cout <<lowestOne(6) << endl; return 0; }N!中含有质因数2的个数,还等于N减去N的二进制表示中1的数目。
设N的二进制表示中1的数目为f(x),则易知
。另设g(x)=x,
。
按照递归函数的思想,所有的可计算函数都是可以表示成递归的,下面将恒等函数用递归的形式表示出来。
上面的递归形式并不是最终的,但这种形式有利于我们的推导,注意这里的除法是整除的意思。最终可以得到下面的式子。
(2)式的最后一项 ,恰好表示x的二进制表示中1的个数。综上,原命题得证。
相关文章推荐
- 编程之美读书笔记2.2—不要被阶乘吓倒
- 数字之魅:不要被阶乘吓倒
- [编程之美] PSet2.2 不要被阶乘吓倒
- 《编程之美》2.2 不要被阶乘吓倒(c++ 源码)
- 编程之美:不要被阶乘吓倒
- 编程之美2.2不要被阶乘吓倒Java版
- 编程之美2.2 不要被阶乘吓倒
- 编程之美—不要被阶乘吓倒
- 不要被阶乘吓倒[转]
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 编程之美2.2不要被阶乘吓倒
- 第2章 数字之魅——不要被阶乘吓倒
- 编程之美 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒(1)
- 不要被阶乘吓倒(2)
- 2.2 不要被阶乘吓倒
- 千万不要被阶乘吓倒
- 编程之美--不要被阶乘吓倒