传送门
题解:

简直完美<(▰˘◡˘▰)>
对于求约数个数,可以参看这一篇blog
除了线性筛,可以O(n√n)求(网上很多博客中就是这么做的),不过有更快的方法,代码复杂度又不高,为啥不用(ง •̀_•́)ง。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=5e4+5;
int n,m,prime[MAXN],vis[MAXN],mu[MAXN],d[MAXN],t[MAXN],tot=0;
ll ans;
inline int read() {int x=0;char c=getchar();while (c<'0'||c>'9') c=getchar();while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();return x;
}
inline void linear_shaker() {memset(vis,0,sizeof(vis));d[1]=1,t[1]=0,mu[1]=1;for (register int i=2;i<MAXN;++i) {if (!vis[i]) prime[++tot]=i,d[i]=2,t[i]=1,mu[i]=-1;for (int j=1;j<=tot&&i*prime[j]<MAXN;++j) {vis[i*prime[j]]=true;if (i%prime[j]==0) {mu[i*prime[j]]=0;d[i*prime[j]]=d[i]/(t[i]+1)*(t[i]+2);t[i*prime[j]]=t[i]+1;break;}mu[i*prime[j]]=-mu[i];d[i*prime[j]]=d[i]<<1;t[i*prime[j]]=1;}}for (register int i=2;i<MAXN;++i) d[i]+=d[i-1],mu[i]+=mu[i-1];
}
int main() {int kase=read();linear_shaker();while (kase--) {n=read(),m=read();int last=0,t=min(n,m);ll ans=0;for (int i=1;i<=t;i=last+1) {last=min(n/(n/i),m/(m/i));ans+=1ll*(mu[last]-mu[i-1])*d[n/i]*d[m/i];}printf("%lld\n",ans);}return 0;
}

莫比乌斯进阶:bzoj 3994 约数个数和(Mobius)相关推荐

  1. bzoj 3994 约数个数和 —— 反演+数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3994 推导过程和这里一样:https://www.cnblogs.com/MashiroSk ...

  2. P3327 [SDOI2015]约数个数和 (mobius反演)

    P3327 [SDOI2015]约数个数和 推导过程 求∑i=1n∑j=1md(ij)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} d(ij)∑i=1n​∑j=1m​d(ij ...

  3. BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]

    2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...

  4. 「BZOJ 3994」「SDOI 2015」约数个数和「莫比乌斯反演」

    题意 设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\). 题解 首先证个公式: \[d(ij) = \sum_{x|i}\sum_ ...

  5. SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 AcWing 1358. 约数个数和(莫比乌斯反演经典.双上限整除分块) #include <c ...

  6. 数学:莫比乌斯反演-约数个数和

    BZOJ3994:利用莫比乌斯反演求约数个数和 解答此题需要利用约束个数函数的形式,将其与gcd联系再一起,然后再反演,推导 很麻烦 1 #include<cstdio> 2 #inclu ...

  7. 【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演

    题目描述 设d(x)为x的约数个数,给定N.M,求   输入 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. 输出 T行,每行一个整数,表示你 ...

  8. bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和

    http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...

  9. [SDOI2015]约数个数和【莫比乌斯反演】

    [SDOI2015]约数个数和 题意:\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^n\sum{j=1}^md(ij)\) 由结论得\[ans=\sum_{i=1}^n\sum_ ...

最新文章

  1. 十三、linux编程中目录IO常用编程函数
  2. SAP Analytics Cloud导入数据的规模限制
  3. 贝壳“进社区”,让商业向文明靠拢
  4. 【云周刊】第121期:图管够!灌篮高手、女儿国…阿里日,这帮程序员太会玩了!
  5. bus error的解决方法
  6. 王选:从Dijkstra谈帅才的洞察力
  7. PHPStudy环境下phpmyadmin卡顿延迟不流畅解决办法
  8. Mastering the game of Go with deep neural networks and tree search翻译
  9. 文献解读 | m6A——程序性细胞死亡与癌症的“双刃剑”
  10. 目标检测:Faster-RCNN与YOLO V3模型的对比分析
  11. Redis知识点整理
  12. SPDR年内增量尽数被抹 市场看空金市
  13. 学科综合 | 当你在浏览器中输入Google.com并且按下回车之后发生了什么?
  14. vfp 连接mysql数据库_VFP与SQL远程异构数据库_mysql
  15. 64位windows10安装Sql server 2000
  16. 学习 PySOT(2)(PySOT-toolkit、对比、画图)
  17. 大学计算机基础完整性约束,大一大学计算机基础题库含12份
  18. 分享一个自律的小故事
  19. 7z 头部错误 数据错误_简单的方法来修复损坏的7Zip的文件
  20. js表单全选和取消全选

热门文章

  1. Python中 5个非常有用的单行代码
  2. 华农软件工程实验报告_华南农业大学软件工程大一课程表
  3. Dubbo-04 20190317
  4. Centos6.9 下的 CM(Cloudera Manager)CDH 大数据环境部署
  5. DeepNet :Scaling Transformers to 1000 Layer
  6. Dart的mixin详解
  7. 服务器2012还原系统,Windows Server 2012如何进行系统映像还原
  8. 机器学习入门——鸢尾花问题
  9. android 8 奕骆,为耐而生的手机 Innos奕骆D6000评测
  10. java遍历excel 表格