CF1528F AmShZ Farm 题解
思路#
首先,原题意要你求:
其实比较板子吧。
设
那么:
所以:
递推即可。
发现上面所有的东西都可以线性处理。
时间复杂度:
Code#
#include <bits/stdc++.h>
using namespace std;
#define fro(i, x, y) for (int i = (x); i <= (y); i++)
#define pre(i, x, y) for (int i = (x); i >= (y); i--)
typedef long long i64;
const int N = 1e6 + 10;
const int mod = 998244353;
int n, k, ct;
int r, num, sum, ans;
int f[N], iv[N], fc[N], vs[N], pr[N], sm[N];
inline i64 power(i64 x, i64 y) {
i64 res = 1;
while (y) {
if (y & 1) res = res * x % mod;
x = x * x % mod, y /= 2;
}
return res;
}
inline i64 C1(int x, int y) {
if (x < 0 || y < 0 || x - y < 0) return 0;
while (r < x) ++r, num = 1ll * num * r % mod;
return 1ll * num * iv[y] % mod;
}
inline i64 C2(int x, int y) {
if (x < 0 || y < 0 || x - y < 0) return 0;
return 1ll * (sum = 1ll * sum * (n - y + 1) % mod) * iv[y] % mod;
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> k;
i64 p1 = mod - power(1 + n, mod - 2);
i64 p2 = mod - p1;
fc[0] = 1;
fro(i, 1, k) fc[i] = 1ll * fc[i - 1] * i % mod;
iv[k] = power(fc[k], mod - 2);
pre(i, k, 1) iv[i - 1] = 1ll * iv[i] * i % mod;
r = n - k, sum = 1, num = n - k;
if (n > k) {
f[k] = 1;
for (int i = k - 1, pw = p1; i >= 0; i--, pw = p1 * pw % mod) {
f[i] = (f[i + 1] * (p1 + 1) + C1(n - i - 1, k - i) * pw) % mod;
}
} else {
i64 p = mod + 1 - p2; f[n] = 1;
for (int i = n - 1; i >= 1; i--) {
f[i] = f[i + 1] * p % mod;
}
}
sm[1] = 1;
fro(i, 2, k) {
if (vs[i] == 0) pr[++ct] = i, sm[i] = power(i, k);
for (int j = 1; j <= ct && pr[j] * i <= k; j++) {
vs[pr[j] * i] = 1;
sm[pr[j] * i] = 1ll * sm[pr[j]] * sm[i] % mod;
if (i % pr[j] == 0) break;
}
}
for (int i = 1, pw = p2; i <= k; i++, pw = p2 * pw % mod) {
i64 val = sm[i];
val = val * C2(n, i) % mod;
val = val * pw % mod;
ans = (ans + f[i] * val) % mod;
}
ans = ans * power(1 + n, n) % mod;
cout << (ans % mod + mod) % mod << "\n";
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)