POJ 1430 Binary Stirling Numbers (斯特林数)


POJ 1430 Binary Stirling Numbers (斯特林数)_第1张图片

 

题意:给你n,k,求S(n,k) mod 2。

题解:没什么好说的,知道公式就好解决。C(z,w) = z! / [(w!) * (z-w)!],要判断奇偶性只需要统计一下分子分母的所含的因子2的个数。

#include<cstdio>
#define lint __int64

lint getTwo ( lint x )
{
    lint cnt = 0, bit = 2;
    while ( x / bit )
    {
        cnt += x / bit;
        bit <<= 1;
    }
    return cnt;
}

int main()
{
    int d, n, k;
    scanf("%d",&d);
    while ( d-- )
    {
        scanf("%d%d",&n, &k);
        lint z = n - (k+2) / 2;
        lint w = (k-1) / 2;
        if ( getTwo(z) - getTwo(w) - getTwo(z-w) > 0 )
            printf("0\n");
        else printf("1\n");
    }
    return 0;

}


 

 

你可能感兴趣的:(POJ 1430 Binary Stirling Numbers (斯特林数))