来源:HDU4349
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//想着LUCAS的公式,mod 2的时候这个式子就退化为一个计数问题了
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int cnt=0;
while(n){
cnt+=(n&1);
n>>=1;
}
long long ans=1;
for(int i=0;i<cnt;i++){
ans*=2;
}
cout<<ans<<endl;
}
return 0;
}
本文介绍了一个关于模2条件下组合计数的问题,并提供了一段C++代码实现。该问题实质上转化为对输入整数进行位运算统计1的个数,然后以此为基础计算最终答案。
756

被折叠的 条评论
为什么被折叠?



