[BZOJ2154]Crash的数字表格(莫比乌斯反演)
来源:互联网 发布:程序授权系统源码 编辑:程序博客网 时间:2024/06/05 10:36
题目:
我是超链接
题解:
柿子就画到这里,一层层往回代就好了,这里的sum可以O(1)求出,F
加上分块优化,这个复杂度基本是O(n)的
注意:最后的ans不要忘了+mod%)mod,sum的过程用一个语句很容易爆int
代码:
#include <cstdio>#include <cstring>#include <iostream>#define LL long longusing namespace std;const int mod=20101009;const int N=1e7;int pri[N+5],num,n,m;LL mu[N+5];bool ss[N+5];void get_mu(){ mu[1]=1; for (LL i=2;i<=n;i++) { if (!ss[i]) { pri[++num]=i; mu[i]=-1; } for (int j=1;j<=num && pri[j]*i<=n;j++) { ss[pri[j]*i]=1; if (i%pri[j]==0) { mu[pri[j]*i]=0; break; } mu[pri[j]*i]=-mu[i]; } } for (int i=1;i<=n;i++) mu[i]=(mu[i-1]+(LL)i*i%mod*mu[i]%mod)%mod;}LL sum(LL x,LL y){ LL w1=((x+1)*x/2)%mod; LL w2=((y+1)*y/2)%mod; return w1*w2%mod;}LL F(LL n,LL m){ if (n>m) swap(n,m); LL t=0,j; for (int d=1;d<=n;d=j+1) { j=min(n/(n/d),m/(m/d)); t=((LL)(mu[j]-mu[d-1])%mod*(LL)sum(n/d,m/d)%mod+t)%mod; } return t;}int main(){ scanf("%d%d",&n,&m); if (n>m) swap(n,m); get_mu();LL ans=0;int j; for (int d=1;d<=n;d=j+1) { j=min(n/(n/d),m/(m/d)); ans=(ans+(LL)(d+j)*(LL)(j-d+1)/2%mod*(LL)F(n/d,m/d)%mod)%mod; } printf("%lld",(ans+mod)%mod);}
阅读全文
2 0
- [BZOJ2154]Crash的数字表格 && 莫比乌斯反演
- 【莫比乌斯反演】[BZOJ2154]Crash的数字表格
- 【bzoj2154】【Crash的数字表格】【莫比乌斯反演】
- bzoj2154 Crash的数字表格(莫比乌斯反演)
- 【BZOJ2154】Crash的数字表格(莫比乌斯反演)(数学)
- [BZOJ2154]Crash的数字表格(莫比乌斯反演)
- 【BZOJ2154】Crash的数字表格,数论练习之二维LCM(莫比乌斯反演)
- [BZOJ2154]Crash的数字表格(莫比乌斯反演)
- bzoj2154: Crash的数字表格/2693: jzptab [莫比乌斯反演、数论推导]
- 【bzoj2154/2693】Crash的数字表格/jzptab 莫比乌斯反演
- 【莫比乌斯反演】[HYSBZ\BZOJ2154]Crash的数字表格
- 【莫比乌斯反演】BZOJ2154[Crash的数字表格]题解
- 【bzoj 2154】Crash的数字表格(莫比乌斯反演)
- BZOJ 2154 Crash的数字表格(sigma(lcm(i,j)),莫比乌斯反演)
- BZOJ 2154 Crash的数字表格(莫比乌斯反演)
- [BZOJ2154]Crash的数字表格(数论)
- 【BZOJ】【P2154】【Crash的数字表格】【题解】【莫比乌斯反演】
- BZOJ 2154 Crash的数字表格 莫比乌斯反演
- 最小生成树
- 凸优化,含有支撑超平面
- HTTP状态码
- java web应用启动和销毁监听
- 深度学习实践向之优化方法
- [BZOJ2154]Crash的数字表格(莫比乌斯反演)
- 蓝桥杯 入门训练 Fibonacci数列
- Linux:文件编程学习中遇到的问题
- qiniu加密文件下载
- 蓝桥杯练习题之数的对换
- session失效之后重新登录,点击失效之前的菜单依旧返回登录页面
- 处理对象的多种状态及其相互转换——状态模式(五)
- 一、安装Python
- 欢迎使用CSDN-markdown编辑器