* 给定一个非负整数N,如果用二进制数表达N!的结果,返回最低位的1在哪个位置上,认为最右的位置为位置0
* `首先使用一种笨方法。。通过率低 50%`
var num=parseInt(readline());
function mynum(num){
if(num==1){
return 1;
}else{
return mynum(num-1)*num;
}
}
var arr=mynum(num).toString(2).split('').reverse();
console.log(arr.indexOf('1'))
* `最后由于堆栈不够,所以需要找到规律!`
* `设置n的时候,1>0,2>1,3>1,4>3,5>3,6>4,7>4,8>7`
* `然后找到规律,最低位等于(n/2)一直遍历,例如8,(8/2)+(4/2)+(2/2)=4+2+1=7`
* `7-- (7/2)+(3/2)+(1/2),注意,每次都取整,所以就是 3+1+0=4`
var num=parseInt(readline());
function mynum(num){
var n=0;
while(num>1){
num=Math.floor(num/2)
n+=num;
}
return n;
}
console.log(mynum(num))
* `最后这样的通过率还是只有50%`