【P2260 [清华集训2012]模积和】题解
题目地址
题目
求
mod 19940417 的值
思路
设
前面那两坨就是个数论分块板子,后面那块拆一下:
这里还是可以数论分块,每次块的 可以取
然后还有几个难点
-
后面那坨鬼东西乘 ,众所周知二次方和公式
-
然后上面那个鬼公式因为上面三个乘起来会爆所以要用逆元
-
然后因为
↑↓出题人模数不是质数不能用费马只能老老实实打拓欧
Code
// Problem: P2260 [清华集训2012]模积和
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P2260
// Memory Limit: 125 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;
ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+
(x<<3)+(ch^48);ch=getchar();}return x*f;}
//#define M
#define mo 19940417
//#define N
int n, m, i, j, k, T;
int ans, l, r, P;
int kuai(int a, int b)
{
int ans=1;
while(b)
{
if(b&1) ans*=a;
a*=a; b>>=1;
ans%=mo; a%=mo;
}
return ans;
}
void exgcd(int a, int b, int &x, int &y)
{
if(b==0) x=1, y=0;
else
{
exgcd(b, a%b, x, y);
int z=y;
y=x-a/b*y;
x=z;
}
}
int calc(int n)
{
int ans=n*n%mo, l, r;
for(l=1; l<=n; l=r+1)
{
r=min(n, n/(n/l));
ans-=(l+r)*(r-l+1)/2%mo*(n/l)%mo;
ans%=mo;
}
return ans;
}
int sim(int n)
{
return n*(n+1)%mo*(2*n+1)%mo*P%mo;
}
int suan(int l, int r)
{
return (sim(r)-sim(l-1))%mo;
}
signed main()
{
// freopen("tiaoshi.in", "r", stdin);
// freopen("tiaoshi.out", "w", stdout);
exgcd(6, mo, P, T);
n=read(); m=read();
if(n>m) swap(n, m);
ans=calc(n)*calc(m)%mo;
for(l=1; l<=n; l=r+1)
{
r=min({n, n/(n/l), m/(m/l)});
ans-=(r-l+1)*n%mo*m%mo;
ans+=(l+r)*(r-l+1)/2%mo*n%mo*(m/l)%mo;
ans+=(l+r)*(r-l+1)/2%mo*m%mo*(n/l)%mo;
ans-=(m/l)*(n/l)%mo*suan(l, r)%mo;
ans=(ans%mo+mo)%mo;
}
printf("%lld\n", ans);
return 0;
}
总结
本题考察一下知识点;
- 式子化简(是个人都会)
- 数论分块(在学,这几天做个笔记)和其拓展应用(如本题)
- 二次和公式(以前用过,但忘了)
- 拓欧求逆元(学了又忘,再学又忘,还是要靠推)
本文来自博客园,作者:zhangtingxi,转载请注明原文链接:https://www.cnblogs.com/zhangtingxi/p/16531877.html
分类:
数学
, 数学-组合数学
, 数学-数论-逆元
, 数学-数论-质数
, 数学-数论
, OJ-洛谷
, 数学-数论-欧几里得定理/gcd
, 数学-数论-拓展欧几里得定理/exgcd
, 数学-数论-因数
, 数学-数论-数论分块
, 数学-组合-二次和公式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!