[HDU4349]Xiao Ming's Hope(组合数学Lucas定理)

来源:互联网 发布:淘宝注销店铺重新开店 编辑:程序博客网 时间:2024/05/09 21:35

题目描述

传送门

题解

这题其实就是求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);    }}
0 0
原创粉丝点击