- P116's solution
P116's Solution
- 2025-9-4 22:00:03 @
不难发现,一种语言集合与它关于语言全集的补集一定没有交集,因此这两个集合中只能出现一个——这意味着答案一定不大于总集合数 的一半,即 。
显然让所有人掌握第 种语言是合法的,此时的答案恰好为 ,故最终的答案为 。
#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;
}