Crash的数字表格 / JZPTAB 题解
提供两种(其实是一个式子)式子。
第一种
min(n,m)∑g=1gmin(⌊ng⌋,⌊mg⌋)∑d=1μ(d)∗d2(⌊ndg⌋∑i=1i⌊mdg⌋∑j=1j)
第二种
min(n,m)∑T=1(⌊nT⌋∑i=1i⌊mT⌋∑j=1j)∑d|Td∗μ(d)∗T
其实都可以算, 时间所迫(还有很多题没做啊啊啊啊), 只写第二种, 第一种口胡下 : 对 g 整除分块, 再对 d 整除分块, 复杂度是 O(n34), 再加上 O(n) 预处理 μ, 总复杂度是 O(n) 的。
第二种 O(n) 预处理出 ∑d|Td∗μ(d)∗T 的前缀和, 再分块 O(√n) 算, 总复杂度也是 O(n) 的。
第二种Luogu数据AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e7 + 15;
const int mod = 20101009;
const int inv2 = 10050505;
#define li long long
int pr_cnt, prime[maxn], v[maxn];
li f[maxn], s[maxn];
void euler(int n) {
f[1] = s[1] = 1ll;
for(int i=2; i<=n; ++i) {
if(!v[i]) {
v[prime[++pr_cnt] = i] = i;
f[i] = 1-i+mod; //不用取模qwq
}
for(int j=1; j<=pr_cnt; ++j) {
if(prime[j] > n/i || prime[j] > v[i]) break;
v[prime[j] * i] = prime[j];
f[prime[j] * i] = f[i] * (i%prime[j] ? f[prime[j]] : 1ll) % mod;
}
}
for(int i=1; i<=n; ++i) {
f[i] = (1ll*f[i]*i) % mod;
}
for(int i=2; i<=n; ++i) {
s[i] = s[i-1] + 1ll*i;
s[i] %= mod;
}
for(int i=1; i<=n; ++i) {
f[i] = (f[i]+f[i-1])%mod;
}
}
int main()
{
int n,m; cin>>n>>m; euler(max(n,m));
int len = min(n,m);
li ans = 0ll;
for(int i=1,j;i<=len;i=j+1) {
j = min(n/(n/i), m/(m/i));
j = min(j,len);
ans += s[n/i] * s[m/i] % mod * (f[j]-f[i-1]+mod) % mod;
ans = (ans%mod+mod)%mod;
}
cout << ans;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理