[BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
来源:互联网 发布:snmp l流量监控软件 编辑:程序博客网 时间:2024/05/21 09:16
题目:
我是超链接
题解:
这个d(ij)怎么看都没有头绪,按照经验来说应该画成一个含有gcd的柿子
先看个结论
为什么呢?
证明一下,每一个nm的约数都可以表示为
那我们看看怎么求f(n)吧(只需要O(n√n) 分块预处理就好)
那我们用分块就可以O(n√n+T(√n+√m))就能顺利通过这道题啦
代码:
#include <cstdio>#include <iostream>#define LL long longusing namespace std;const int N=50000;int pri[N+5],num;bool ss[N+5];LL f[N+5],mu[N+5];void get_mu(){ mu[1]=1; for (int 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) break; mu[pri[j]*i]=-mu[i]; } } for (int i=1;i<=N;i++) mu[i]+=mu[i-1];}int main(){ int T,i,n,m,j,k; get_mu(); for (n=1;n<=N;n++) for (j=1;j<=n;j=k+1) { k=min(n,n/(n/j)); f[n]+=(k-j+1)*(n/j); } scanf("%d",&T); while (T--) { LL ans=0; scanf("%d%d",&n,&m); if (n>m) swap(n,m); for (i=1;i<=n;i=j+1) { j=min(n,min(n/(n/i),m/(m/i))); ans+=(mu[j]-mu[i-1])*f[n/i]*f[m/i]; } printf("%lld\n",ans); }}
阅读全文
1 0
- 【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演
- [BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
- 【BZOJ3994】【SDOI2015】约数个数和(莫比乌斯反演)
- [BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
- [BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
- 【bzoj3994】[SDOI2015]约数个数和 线性筛法+莫比乌斯反演+数论分块
- 【莫比乌斯反演】[BZOJ3994]约数个数和
- bzoj3994 约数个数和 数论&莫比乌斯反演
- 约数个数和(数论,莫比乌斯反演)BZOJ3994
- Sdoi2015约数个数和题解莫比乌斯反演
- 3994: [SDOI2015]约数个数和 莫比乌斯反演
- 【bzoj3994】【SDOI2015】约数个数和【数论】【反演】
- [莫比乌斯反演 约数个数] BZOJ 3994 [SDOI2015]约数个数和
- 洛谷P3327:[SDOI2015]约数个数和 (莫比乌斯反演)
- [BZOJ3994][SDOI2015]约数个数和(数论)
- 【SDOI2015】【BZOJ3994】约数个数和
- [BZOJ3994][SDOI2015]约数个数和
- BZOJ3994: [SDOI2015]约数个数和
- 《20171125》
- AlertDialog中修改字体颜色。AlertDialog简单使用,小米2max无颜色
- php单双引号对变量解析的影响以及php向mysql插入数据时的变量解析问题详解
- Torch框架及XNOR-Net学习笔记(1)--Torch的安装
- Linux常用命令 全
- [BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
- Golang从入门到精通(七):Golang控制语句之switch
- Java第一节课
- mysql 5.7.13 安装配置方法图文教程(linux)
- springboot日志文件logback+Slf4j
- linux进程状态详解
- 快来庆祝我的博客开通吧
- 利用高德地图实现定位功能
- 留言本问题总结