/*=============
兩種方法求N!的二進制表示中最低位1的位置
2013-09-10 14:33 by Mei
===============*/
#include <iostream>
using namespace std;
int num(int n)
{
int a = 0;
while(n%2==0)
{
a++;
n = n/2;
}
return a;
}
//第一種方法
int first(int n)
{
int ret = 0;
for(int i=2; i<=n;i+=2)
{
ret += num(i);
}
return ret+1;
}
//第二種方法
int second(int n)
{
int ret = 0;
while(n)
{
n >>= 1;
ret += n;
}
return ret+1;
}
int main()
{
int n;
cout <<"請輸入n: ";
cin >> n;
cout <<first(n)<<endl;
cout <<second(n) << endl;
return 0;
}