1 条题解

  • 0
    @ 2025-1-28 12:00:47

    不难发现,一种语言集合与它关于语言全集的补集一定没有交集,因此这两个集合中只能出现一个——这意味着答案一定不大于总集合数 2n2^n 的一半,即 2n12^{n-1}

    显然让所有人掌握第 11 种语言是合法的,此时的答案恰好为 2n12^{n-1},故最终的答案为 2n12^{n-1}

    #include <bits/stdc++.h>
    using namespace std;
    const int P = 127237991;
    int power(int b, int k, int p)
    {
    	if (k == 0) return 1;
    	if (k == 1) return b;
    	long long s = power(b, k >> 1, p);
    	s = s * s % p;
    	if (k & 1) s *= b;
    	return s % p;
    }
    int main()
    {
        long long n;
        cin >> n;
        n = (n - 1) % (P - 1);
        cout << power(2, n, P) << endl;
        return 0;
    }
    
    • 1

    信息

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