题解 P4900 食堂
一道推式子的数学题。
令 为 到 的所有数的约数个数之和。即:
则最终式子可以化简为:
第一项和第二项均可用两次前缀和预处理。
预处理 ,查询 。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5 + 5, N2 = 1e6 + 5, mod = 998244353;
ll T, s = 0, inv[N2], cnt[N2], x[N2], f[N2];
ll getans(ll n) {return (x[n] - f[n] + mod) % mod;}
int main() {
inv[1] = s = x[1] = f[1] = cnt[1] = 1;
for (ll i = 2; i <= 1e6; ++i) {
inv[i] = (mod - mod / i * inv[mod % i] % mod) % mod;
s = (s + inv[i]) % mod;
x[i] = (x[i - 1] + i * s) % mod;
}
for (ll i = 2; i <= 1e6; ++i) {
++cnt[i];
for (int j = i; j <= 1e6; j += i) ++cnt[j];
}
s = 0;
for (int i = 1; i <= 1e6; ++i) s = (s + cnt[i]) % mod, f[i] = (f[i - 1] + s) % mod;
scanf("%d", &T);
while (T--) {
ll p, q; scanf("%lld%lld", &p, &q);
printf("%lld\n", (getans(q) - getans(p - 1) + mod) % mod);
}
return 0;
}
本文作者:HQJ2007
本文链接:https://www.cnblogs.com/HQJ2007/p/17561272.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构