bzoj2154 Crash的数字表格
来源:互联网 发布:涉税软件下载 编辑:程序博客网 时间:2024/06/05 23:49
题目链接:bzoj2154
题目大意:
给定n、m,求
1≤n,m≤10000000
题解:
莫比乌斯反演
把原式化开
枚举约数(省略前面的了)
交换枚举倍数和约数
再次交换枚举倍数和约数
设
则上式变成
设
于是上式又变成了
这个也可以分块了。
所以时间复杂度大概是
LL、mod什么的真的要注意啊不然WA到死。
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;#define N 10000100const LL ny=10050505;const LL mod=20101009;int cnt,pri[N/10];bool ispri[N];LL mu[N],pre[N];int mymin(int x,int y){return (x<y)?x:y;}void mobius(int lim){ cnt=0;mu[1]=1; for (int i=2;i<=lim;i++) { if (!ispri[i]) {pri[++cnt]=i;mu[i]=-1;} for (int j=1;j<=cnt && i*pri[j]<=lim;j++) { ispri[i*pri[j]]=true; if (i%pri[j]==0) { mu[i*pri[j]]=0; break; } mu[i*pri[j]]=-mu[i]; } }}LL sum(int n,int m){ LL s1=(LL)(n)*(LL)(n+1)%mod*ny%mod; LL s2=(LL)(m)*(LL)(m+1)%mod*ny%mod; return s1*s2%mod;}LL f(int x,int y){ int r,lim=mymin(x,y);LL ans=0; for (int i=1;i<=lim;i=r+1) { r=mymin(x/(x/i),y/(y/i)); ans=(ans+sum(x/i,y/i)*(pre[r]-pre[i-1])%mod)%mod; }while (ans<0) ans+=mod; return ans;}int main(){ //freopen("a.in","r",stdin); //freopen("a.out","w",stdout); int n,m,r,i,lim;LL ans=0; scanf("%d%d",&n,&m); lim=mymin(n,m);mobius(lim); pre[1]=mu[1];for (i=2;i<=lim;i++) pre[i]=(pre[i-1]+(LL)i*i%mod*mu[i]%mod)%mod; for (i=1;i<=lim;i=r+1) { r=mymin(n/(n/i),m/(m/i)); ans=(ans+(LL)(r-i+1)*(r+i)%mod*ny%mod*f(n/i,m/i)%mod)%mod; }while (ans<0) ans+=mod; printf("%lld\n",ans); return 0;}
0 0
- 【BZOJ2154】Crash的数字表格
- bzoj2154: Crash的数字表格
- BZOJ2154: Crash的数字表格
- bzoj2154: Crash的数字表格
- [bzoj2154]Crash的数字表格
- bzoj2154 Crash的数字表格
- bzoj2154 Crash的数字表格
- [BZOJ2154] Crash的数字表格
- bzoj2154 Crash的数字表格
- bzoj2154 Crash的数字表格
- bzoj2154: Crash的数字表格
- bzoj2154: Crash的数字表格
- [bzoj2154]Crash的数字表格
- BZOJ2154: Crash的数字表格
- bzoj2154 Crash的数字表格
- [bzoj2154]Crash的数字表格
- 【bzoj2154】Crash的数字表格
- BZOJ2154 Crash的数字表格
- github创建可访问的静态网站,个人博客教程
- undefined reference to `__gxx_personality_v0'
- JavaScript学习之作用域(一)
- 401. Binary Watch
- 3.27
- bzoj2154 Crash的数字表格
- linux基础
- gulp安装步骤
- JVM加载类过程的总结
- C++模板实现二叉查找树(一 树的数据结构定义与节点插入)
- 217. Contains Duplicate
- Java多线程编程
- 蓝桥杯-第n个素数
- AlloyClip的简单使用