bzoj2693: jzptab
来源:互联网 发布:公司内部网络ip建设 编辑:程序博客网 时间:2024/06/14 20:49
传送门
@jzq233jzq
没看过2154的右转
然后再化开。
设
则
然后设
可以发现
线性筛一发+分块枚举D水过。
#include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#define ll long longusing namespace std;const ll mo=100000009;const int N=10000005;ll h[N],ans;int pri[N/10],T,n,m,tot;bool fl[N];ll sum(ll x,ll y){ ll s1=x*(x+1)/2%mo; ll s2=y*(y+1)/2%mo; return s1*s2%mo; }int main(){ h[1]=1; for (int i=2;i<N;i++){ if (!fl[i]){ pri[++tot]=i; h[i]=(i-1ll*i*i%mo+mo)%mo; } for (int j=1;pri[j]*i<N&&j<=tot;j++){ fl[pri[j]*i]=1; if (i%pri[j]==0){ h[pri[j]*i]=pri[j]*h[i]%mo; break; } h[pri[j]*i]=h[pri[j]]*h[i]%mo; } } for (int i=1;i<N;i++) h[i]=(h[i]+h[i-1])%mo; scanf("%d",&T); while (T--){ scanf("%d%d",&n,&m); ans=0; if (n>m) swap(n,m); for (int i=1,j;i<=n;i=j+1){ j=min(n/(n/i),m/(m/i)); ans=(ans+sum(n/i,m/i)*(h[j]-h[i-1])%mo+mo)%mo; } printf("%lld\n",ans); }}
0 0
- bzoj2693: jzptab
- BZOJ2693: jzptab
- bzoj2693 jzptab
- jzptab[bzoj2693]
- bzoj2693 jzptab
- bzoj2693: jzptab
- bzoj2693: jzptab
- BZOJ2693: jzptab
- 【BZOJ2693】jzptab
- 【bzoj2693】jzptab【反演】
- BZOJ2693——jzptab
- [bzoj2693&bzoj2194]Crash的数字表格&jzptab
- 【莫比乌斯反演】[HYSBZ/BZOJ2693]jzptab
- [BZOJ2693]jzptab(莫比乌斯反演)
- 【BZOJ2693】jzptab(莫比乌斯反演)(数学)
- NKOJ3958(CQOI2015)(BZOJ2693) JZPTAB(莫比乌斯反演)
- 【NKOJ3958/BZOJ2693】【莫比乌斯反演】jzptab
- bzoj2693
- SQLite中.mode的演示说明
- 什么是Lucene
- Lucence例子
- 手写json的坑
- 其实苹果没啥黑科技,只是公司大一点
- bzoj2693: jzptab
- 第五章 首次登陆与在线求助 man page
- 第六章 Linux文件权限概念
- MTK SmartPhone Record-(3)
- 第六章 Linux目录配置
- 第七章 目录与路径
- 第七章 文件与目录管理
- 一个前端的计算器
- 第七章 文件内容查阅