カメヲラボ

主にプログラミングとお勉強全般について書いてます

Binomial Coefficients

http://acm.pku.edu.cn/JudgeOnline/problem?id=3219

C(n, 0) = C(n, n) = 1 for all n > 0
C(n, k) = C(n − 1, k − 1) + C(n − 1, k) for all 0 < k < n

というルールでC(n,k)を計算したときの偶奇を判定する問題。これってパスカルの三角形ダヨネ!というわけでウンコ簡単。

n次の2項式を展開したとき、前からk番目の項の係数を求めることと同じなので、いわゆる2項定理というやつです。コンビネーションの計算をやっても良いですが、偶奇の判定だけならビット演算でビビビとできます。むふ。

main(n,k)
{
  for(;~scanf("%d%d",&n,&k);puts(n&k^k?"0":"1"));
}