博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
阅读量:7233 次
发布时间:2019-06-29

本文共 1244 字,大约阅读时间需要 4 分钟。

 

式子好麻烦orz……大佬好腻害orz->

1 //minamoto 2 #include
3 #include
4 #define ll long long 5 using namespace std; 6 const int N=1e7+5,mod=20101009; 7 int n,m,vis[N],p[N],cnt,mu[N];ll sum[N]; 8 ll ans,inv2,summ; 9 void init(int lim){10 mu[1]=1;11 for(int i=2;i<=lim;++i){12 if(!vis[i]) p[++cnt]=i,mu[i]=-1;13 for(int j=1;j<=cnt&&p[j]*i<=lim;++j){14 vis[i*p[j]]=1;15 if(i%p[j]==0) break;16 mu[i*p[j]]=-mu[i];17 }18 }19 for(int i=1;i<=lim;++i)20 (sum[i]=sum[i-1]+1ll*mu[i]*i*i)%=mod;21 }22 ll calc(int mx,int l){23 return (1ll+mx/l)*(mx/l)%mod*inv2%mod;24 }25 int main(){26 // freopen("testdata.in","r",stdin);27 scanf("%d%d",&n,&m);28 int lim;init(lim=min(n,m));29 ans=0,inv2=(mod+1)/2,summ=0;30 for(int d=1;d<=lim;++d){31 int mxx=n/d,myy=m/d,mn=min(mxx,myy);32 summ=0;33 for(int l=1,r;l<=mn;l=r+1){34 r=min(mxx/(mxx/l),myy/(myy/l));35 (summ+=(sum[r]-sum[l-1])%mod*calc(mxx,l)%mod*calc(myy,l)%mod)%=mod;36 }37 (ans+=summ*d)%=mod;38 }39 printf("%lld\n",(ans%mod+mod)%mod);40 return 0;41 }

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9699659.html

你可能感兴趣的文章
ubuntu上安装 MySQL 启动/停止 连接MySQL
查看>>
liunx 修改ssh 端口22
查看>>
iOS企业证书申请介绍
查看>>
hdu 1950 Bridging signals(最长上升子序列)
查看>>
jquery学习收获
查看>>
es6js promise在ie中报错“未定义”
查看>>
思科HSRP和Port-channel配置
查看>>
常用的sql脚本(陆续更新)
查看>>
mongodb的gridfs
查看>>
api图片传输,转成64位字符串进行传输
查看>>
Matlab高斯分布输入的PID控制
查看>>
【Java】自定义异常
查看>>
Ubuntu14.04server开放rootssh登录权限
查看>>
错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
查看>>
Linux 权限基础说明
查看>>
2017级面向对象程序设计寒假作业3
查看>>
迭代器
查看>>
Linux OpenCV 静态链接错误
查看>>
Java多线程&集合类-详细版
查看>>
Flask即插视图与tornado比较
查看>>