不要被阶乘吓倒(2)
来源:互联网 发布:java实现图书管理系统 编辑:程序博客网 时间:2024/05/21 06:15
package com.demo;
/**
* 求N!的二进制表示中最低位1的位置,例如:给定N = 3,N!= 6,那么N!的二进制表示(1 010)的最低位1在第1位
* @author ying
*
*/
public class Factorial2 {
/**
* 回想一下十进制和二进制的转换过程,就是拿十进制的数不断去除于2。
* 也就是说任意一个长度为m的二进制数N可以表示为N = b[1] + b[2] * 2 + b[3] * 22 + … + b[m] * 2(m-1),其中b [ i ]表示此二进制数第i位上的数字(1或0)。
* 所以,若最低位b[1]为1,则说明N为奇数;反之为偶数,将其除以2,即等于将整个二进制数向低位移一位。
* 最后问题可以转化为求N!中含有质因数2的个数
* @param n
* @return
*/
public String lowestOne(int n){
int ret = 0;
while(n!=0){
n>>=1;
ret+=n;
}
return "n!的二进制表示中最低位1在第"+ret+"位(位数从0开始)";
}
}
/**
* 求N!的二进制表示中最低位1的位置,例如:给定N = 3,N!= 6,那么N!的二进制表示(1 010)的最低位1在第1位
* @author ying
*
*/
public class Factorial2 {
/**
* 回想一下十进制和二进制的转换过程,就是拿十进制的数不断去除于2。
* 也就是说任意一个长度为m的二进制数N可以表示为N = b[1] + b[2] * 2 + b[3] * 22 + … + b[m] * 2(m-1),其中b [ i ]表示此二进制数第i位上的数字(1或0)。
* 所以,若最低位b[1]为1,则说明N为奇数;反之为偶数,将其除以2,即等于将整个二进制数向低位移一位。
* 最后问题可以转化为求N!中含有质因数2的个数
* @param n
* @return
*/
public String lowestOne(int n){
int ret = 0;
while(n!=0){
n>>=1;
ret+=n;
}
return "n!的二进制表示中最低位1在第"+ret+"位(位数从0开始)";
}
}
0 0
- 不要被阶乘吓倒(2)
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 2.2不要被阶乘吓倒(读书笔记)
- 不要被阶乘吓倒(1)
- (1.5.2.2)不要被阶乘吓倒
- 2.2 不要被阶乘吓倒
- 编程之美_2.2_不要被阶乘吓倒
- [编程之美] PSet2.2 不要被阶乘吓倒
- 程序员面试题(60):不要被阶乘吓倒
- queue<ValueMap> g_worldGlobalQueue报错
- 关于近期oj上做题的整理[2]
- hdu 4920 Matrix multiplication(多校第5场,矩阵相乘)
- 深入理解DataAdapter(一)
- Jetty学习2.Eclipse中安装Jetty插件
- 不要被阶乘吓倒(2)
- SpringMVC整合fastjson-1.1.41
- JS获取本地文件绝对路径-预览本地图片
- 使用sun.misc.Unsafe及反射对内存进行内省(introspection)
- 这样的平台值得一玩,反正注册又不会怀孕
- MFC png
- JAVA中的final
- 剑指Offer4 替换空格
- 串口中怎样接收一个完整数据包的解析