/*============= 兩種方法求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; }