1 条题解

  • 0
    @ 2025-5-4 13:43:26

    题目描述

    我们需要计算第二类Stirling数S(n,m)S(n, m)的奇偶性,即S(n,m)mod2S(n, m) \mod 2。第二类Stirling数S(n,m)S(n, m)表示将nn个元素的集合划分为mm个非空子集的方式数。题目给出了1mn1091 \leq m \leq n \leq 10^9,直接计算显然不可行,因此需要找到S(n,m)mod2S(n, m) \mod 2的规律或数学性质。

    解题思路

    1. 第二类Stirling数的递推关系

      • S(0,0)=1S(0, 0) = 1
      • S(n,0)=0S(n, 0) = 0n>0n > 0
      • S(0,m)=0S(0, m) = 0m>0m > 0
      • S(n,m)=mS(n1,m)+S(n1,m1)S(n, m) = m \cdot S(n-1, m) + S(n-1, m-1)n,m>0n, m > 0
    2. 模2的性质

      • 在模2下,mS(n1,m)m \cdot S(n-1, m)的奇偶性取决于mmS(n1,m)S(n-1, m)的奇偶性。
      • 如果mm是偶数,则mS(n1,m)0mod2m \cdot S(n-1, m) \equiv 0 \mod 2
      • 如果mm是奇数,则mS(n1,m)S(n1,m)mod2m \cdot S(n-1, m) \equiv S(n-1, m) \mod 2
    3. 数学性质

      • 通过观察或数学推导,可以发现S(n,m)mod2S(n, m) \mod 2的值与组合数的奇偶性有关。
      • 具体来说,S(n,m)mod2S(n, m) \mod 2等于(nm+k1k1)mod2\binom{n - m + k - 1}{k - 1} \mod 2,其中k=m/2k = \lceil m/2 \rceil
      • 根据Lucas定理,组合数(ab)mod2\binom{a}{b} \mod 2为1当且仅当bb的二进制表示是aa的二进制表示的子集。
    4. 结论

      • a=nma = n - mb=m/2b = \lceil m/2 \rceil
      • 如果(a+b1b1)mod2=1\binom{a + b - 1}{b - 1} \mod 2 = 1,则S(n,m)mod2=1S(n, m) \mod 2 = 1,否则为0。
      • 用位运算表示为:(a+b1)&(b1)==(b1)(a + b - 1) \& (b - 1) == (b - 1)
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    #include <queue>
    #include <map>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    const int maxn = 1050;
    const ll INF = (1LL << 62) - 1;
    const ll mod = 998244353;
    const double eps = 1e-8;
     
    int t;
    ll n, m;
     
    int main()
    {
        scanf("%d", &t);
        while(t--)
        {
            scanf("%lld%lld", &n, &m);
            if(n == 0 && m == 0) {printf("1\n"); continue;}
            if(n == 0 || m == 0 || n < 0) {printf("0\n"); continue;}
            ll a = n - m, b = (m + 1)/2;
            if(((a+b-1) & (b-1)) == (b-1)) printf("1\n");
            else printf("0\n");
        }
        return 0;
    }
    
    • 1

    信息

    ID
    431
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者