POJ 3219 Binomial Coefficients C++版
题目链接:http://poj.org/problem?id=3219
题意简单,求C(n,k)的奇偶性,
我的方法不简单,但分析简单,不过今天还看到个大神的分析,让我很是佩服
我门知道C(n,k)=n!/k!/(n-k)!那么就通过分析这三项的2的阶数来分析C(n,k)的2的阶数,也就是n!的阶数<=k!的阶数+(n-k)!阶数,则为奇数。
其中n!的2的阶数求解的方法为n/2+n/4+n/8….我就是用的这个方法,
1 | int y(int d) |
1 | int y(int d) |
::cpp
/*Problem: 3219 User: awq123
**Memory: 244K Time: 32MS
**Language: C++ Result: Accepted
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int y(int d)
{
int s=0;
for(int i=2;d/i;i*=2)
s+=d/i;
return s;
}
int main()
{
int n,k;
while (cin>>n>>k)
{
if(k>n-k)
k=n-k;
if(y(n)<=y(n-k)+y(k))
cout<<1<<endl;
else
cout<<0<<endl;
}
}
这个题还见到了一种大神的做法
1 |
|