Binomial Coefficients

来源:互联网 发布:淘宝新开店铺提取王 编辑:程序博客网 时间:2024/06/09 20:34

Binomial Coefficients

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 262144/131072K (Java/Other)
Total Submission(s) : 7   Accepted Submission(s) : 6
Problem Description

The binomial coefficient C(nk) has been extensively studied for its importance in combinatorics. Binomial coefficients can be recursively defined as follows:

C(n, 0) = C(nn) = 1 for all n > 0;
C(nk) = C(n 1, k 1) + C(n 1, k) for all 0 < k < n.

Given n and k, you are to determine the parity of C(nk).

 

Input

The input contains multiple test cases. Each test case consists of a pair of integers n and k (0 ≤ k ≤ n < 231n > 0) on a separate line.

End of file (EOF) indicates the end of input.

 

Output

For each test case, output one line containing either a “0” or a “1”, which is the remainder of C(nk) divided by two.

 

Sample Input
1 11 02 1
 

Sample Output
110
 
代码如下:
#include <iostream>#include <cstdio>using namespace std;int main(){    int n , k ;    while(scanf("%d %d",&n,&k)!=EOF)    {        int res = 0;        int p1 = 2;        int p2 = 2;        int p3 = 2;        while(n/p1)res+=n/p1,p1*=2;        while(k/p2)res-=k/p2,p2*=2;        while((n-k)/p3)res-=(n-k)/p3,p3*=2;        if(res == 0) printf("1\n");        else            printf("0\n");    }    return 0;}


0 0