LGB3717 题解
-
原题链接:B3717 组合数问题。
-
难度:
Easy
组合数学的模板题。
排除做法:
,显然不能使用杨辉三角递推。- 模数为
,无法使用 定理。
正解
考虑直接使用组合数的计算式:
其中
对于
代码
#include <bits/stdc++.h>
using lint = long long;
const int MAXN = 5e6 + 10;
const int MOD = 998244353;
int T, N;
lint n, m, ans, inv[MAXN], fact[MAXN], inv_fact[MAXN];
void init() {
inv[0] = inv[1] = 1;
for (int i = 2; i <= N; ++i) // 线性递推 1~N 的逆元
inv[i] = (MOD - MOD / i) * inv[MOD % i] % MOD;
fact[0] = inv_fact[0] = 1;
for (int i = 1; i <= N; ++i) {
fact[i] = fact[i - 1] * i % MOD;
inv_fact[i] = inv_fact[i - 1] * inv[i] % MOD;
}
}
lint C(int n, int m) { // 根据公式计算
if (m > n) return 0;
if (m == n) return 1;
return fact[n] * inv_fact[m] % MOD * inv_fact[n - m] % MOD;
}
int main() {
std::cin.tie(0)->sync_with_stdio(0); // 加速读入
std::cin >> T >> N, init();
while (T--) {
std::cin >> n >> m;
ans ^= C(n, m);
}
std::cout << ans << std::endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现