您的位置:首页 > 编程语言

编程之美2.2 求N!中最低位1 的位置

2013-09-10 14:35 302 查看
/*=============
两种方法求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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  阶乘