(n,k)(k<=n)的奇偶性取决于(n-k)与k的二进制表达式是否存在同一位上的两个数码均为1,若存在,则为偶数,反之为奇数 #include<stdio.h> int n,k; int main(){ while(scanf("%d%d", &n, &k)!=EOF){ printf("%d\n", k&(n-k)?0:1); } return 0; } 参考资料:【数学通讯(2006年第一期)】“二项式系数奇偶性的判定准则”
也可以统计n!,k!和n-k!的2的个数,然后看x是否大于y+z
以下是我的代码:
int main()
{
int a, b;
while (scanf("%d%d", &a, &b) == 2) {
printf("%d\n", (a - b) & b ? 0 : 1);
continue;
int c = a - b;
int x = 0, y = 0, z = 0;
while (a = a >> 1) {
x += a;
}
while (b = b >> 1) {
y += b;
}
while (c = c >> 1) {
z += c;
}
if (x - y > z) printf("0\n");
else printf("1\n");
}
return 0;
}