题目描述
题解
这题其实就是求
∑i=0nCin%2
利用Lucas定理,每一次将n和i分解成两个二进制数,然后将它们的组合数乘起来
又因为
C00=C01=C11=1,C10=0
所以要想使总体为1,当n的二进制位为1时,有0/1两种选择,当n的二进制位为0时,只有0一种选择
所以如果n的二进制有x位为1,答案应该为
2x
写了一个非常装逼的代码…
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int n,cnt;
int main()
{
while (~scanf("%d",&n))
{
cnt=0;
while (n)
{
++cnt;
n^=n&(-n);
}
printf("%d\n",1<<cnt);
}
}