专栏文章
CF1359E Modular Stability 题解
CF1359E题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minhv5li
- 此快照首次捕获于
- 2025/12/02 02:40 3 个月前
- 此快照最后确认于
- 2025/12/02 02:40 3 个月前
注意到, 无论怎么变换 的顺序结果不变,那么 为最小值,所有 一定是某个正整数 的倍数。于是只需要预处理一下逆元,并枚举 用组合数求结果即可。
代码:
CPP#include <bits/stdc++.h>
using namespace std;
const int M = 1e6 + 5, mod = 998244353;
long long jc[M], jcinv[M], ans;
int n, k;
int C(int n, int m)
{
return jc[n] * jcinv[m] % mod * jcinv[n - m] % mod;
}
long long ksm(long long a, int b)
{
long long c = 1;
while (b)
{
if (b & 1) c = c * a % mod;
a = a * a % mod;
b >>= 1;
}
return c;
}
int main()
{
jc[0] = 1;
jcinv[0] = 1;
for (int i = 1; i <= M - 5; i ++ )
{
jc[i] = jc[i - 1] * i % mod;
jcinv[i] = ksm(jc[i], mod - 2);
}
cin >> n >> k;
for (int i = 1; i <= n; i ++ )
{
if (n / i < k) break;
ans = (ans + C(n / i - 1, k - 1)) % mod;
}
cout << ans << endl;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...