我自己debug的时候输入样例 每个组合数的值输出都是1 6 10 答案没问题 然后异或和算出来居然是12 奇怪了 大佬们 解决完必回关注
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
using namespace std;
typedef long long LL;
const int p = 998244353;
const int N = 5e6 + 10;
LL f[N], inf[N];
LL qmi(int a, int k) {
int res = 1;
while (k) {
if (k & 1) {
res = (LL)a * res % p;
}
k >>= 1;
a = (LL)a * a % p;
}
return res;
}
int main() {
f[0] = inf[0] = 1;
int t, max_n;
scanf("%d%d", &t, &max_n);
for (int i = 1; i <N; i++) {
f[i] = f[i - 1] * i % p;
inf[i] = inf[i - 1] * qmi(i, p - 2)%p;
}
int res = 1;
while (t--) {
int n, m;
scanf("%d%d", &n, &m);
int eor =f[n] * inf[m] % p * inf[n - m] % p;
res ^= eor;
}
printf("%d", res);
return 0;
}