题意

设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\)。

题解

首先证个公式:

\[d(ij) = \sum_{x|i}\sum_{y|j} [gcd(x,y)=1]\]

可以这么考虑:利用唯一分解定理把\(i,j\)分解,即:

$i=\prod_{k = 1}^{m} p_k^{c_k},j=\prod_{k=1}^m p_k^{d_k} $

那等式左边显然为\(\prod(c_k+d_k+1)\),

然后考虑等式右边在干什么事情:约数的最大公约数为\(1\)。

我们把\(x,y\)分解以后\(p_k\)的指数分别记为\(a_k,b_k\)

这就是说对于每个\(p_k\),\(a_k,b_k\)最多有一个大于\(0\)。

那每一位分成三种情况,\(a_k=b_k=0\);\(a_k\in[1,c_k]\)且\(b_k=0\);\(a_k=0\)且\(b_k\in[1,d_k]\)

然后根据乘法原理乘起来,得到的结果和左边一样,就证出来了

然后带进去化简式子:(假设\(n\leq m\))

\[=\sum_{i = 1}^n \sum_{j = 1}^m \sum_{x|i} \sum_{y|j} [gcd(x, y)=1]\]

\[=\sum_{x=1}^n \sum_{y=1}^m [gcd(x, y)=1]\lfloor \frac{n}{x}\rfloor\lfloor \frac{m}{y} \rfloor \]

\[=\sum_{x=1}^n \sum_{y=1}^m (\sum_{d|x,d|y} \mu(d) )\lfloor \frac{n}{x}\rfloor\lfloor \frac{m}{y} \rfloor\]

\[=\sum_{d=1}^n \mu(d) \sum_{x=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{y=1}^{\lfloor \frac{m}{d} \rfloor} \lfloor \frac{n}{xd} \rfloor \lfloor \frac{m}{xd} \rfloor\]

这里利用整除的小性质:\(\lfloor\frac{\lfloor \frac{a}{b} \rfloor}{c} \rfloor=\lfloor\frac{\lfloor\frac{a}{c}\rfloor}{b}\rfloor\)

\[=\sum_{d=1}^n \mu(d) \sum_{x=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{y=1}^{\lfloor \frac{m}{d} \rfloor} \lfloor \frac{\lfloor\frac{n}{d}\rfloor}{x} \rfloor \lfloor \frac{\lfloor\frac{m}{d}\rfloor}{y} \rfloor\]

记\(f(n)=\sum_{i=1}^n\lfloor \frac{n}{i} \rfloor\),则答案为\(\sum_{d=1}^n \mu(d)f(\lfloor \frac{n}{d} \rfloor) f(\lfloor \frac{m}{d} \rfloor)\)

这里如果\(f\)通过数论分块预处理,虽然可以过但是显然不够优美,可以换个角度考虑

这个式子的意义是,对于每个\(i\)统计它\(\leq n\)的所以倍数。那么每个数会被统计\(d(i)\)次(\(d\)为约数个数),因此:

\(f(n)=\sum_{i=1}^n d(i)\)

就可以线性筛预处理\(d\)的前缀和,还要预处理\(\mu\)的前缀和,然后每次数论分块。

#include <algorithm>
#include <cstdio>
using namespace std;typedef long long ll;const int N = 5e4 + 10;ll sum[N], mu[N], d[N];
int p[N], tot, e[N];
bool tag[N];void init(int n) {mu[1] = d[1] = 1;for(int i = 2; i <= n; i ++) {if(!tag[i]) {p[tot ++] = i; mu[i] = -1; d[i] = 2; e[i] = 1;}for(int j = 0; j < tot && i * p[j] <= n; j ++) {tag[i * p[j]] = 1;if(i % p[j] == 0) {mu[i * p[j]] = 0;e[i * p[j]] = e[i] + 1;d[i * p[j]] = d[i] / (e[i] + 1) * (e[i] + 2);break ;}mu[i * p[j]] = - mu[i];e[i * p[j]] = 1;d[i * p[j]] = d[i] * 2;}mu[i] += mu[i - 1];d[i] += d[i - 1];}
}ll calc(int n, int m) {ll ans = 0;for(int i = 1, j; i <= n; i = j + 1) {j = min(n / (n / i), m / (m / i));ans += (mu[j] - mu[i - 1]) * d[n / i] * d[m / i];}return ans;
}int main() {init(50000);int test; scanf("%d", &test);for(int n, m; test --; ) {scanf("%d%d", &n, &m);if(n > m) swap(n, m);printf("%lld\n", calc(n, m));}return 0;
}

转载于:https://www.cnblogs.com/hongzy/p/10363609.html

「BZOJ 3994」「SDOI 2015」约数个数和「莫比乌斯反演」相关推荐

  1. 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」

    题意 有一张 \(n\times m\) 的数表,其第\(i\)行第\(j\)列的数值为能同时整除\(i\)和\(j\)的所有自然数之和. \(T\)组数据,询问对于给定的 \(n,m,a\) , 计 ...

  2. 雅思作文模板.html,2015雅思小作文模板「万能」

    2015雅思小作文模板「万能」 雅思写作考试部分里,往往我们可以采纳"老三段"式的写法,以不变应万变,不论是线图,柱图,表格,饼图,亦或是流程图,我们都可以采用此种方式完成第一部分 ...

  3. 设计需要冲击力:「不怕没品味的人,就怕没品味的人用心」

    "如何让一个网站看起来高大上?或者更有设计感?" 姑且仅理解为视觉层面上如何更好,当然一个网站不仅仅只有视觉,最终的结果是多方因素的完美结合. 让人感受"高大上" ...

  4. openfire消息通知推送_微信小游戏内测「订阅消息」能力,这是召回用户的「大杀器」吗?...

    作者:蒋鸿昌 本文来源于「知晓程序」公众号.知晓云后端云服务,让你的小程序开发快人一步,添加「minsupport3」了解详情. 知晓云​cloud.minapp.com 一位投资人曾把最近 3 年微 ...

  5. 田颖- 「柴姐ye话」主笔,拉链互动副总裁 | 到「在行」来约见我

    田颖- 「柴姐ye话」主笔,拉链互动副总裁 | 到「在行」来约见我 田颖- 「柴姐ye话」主笔,拉链互动副总裁 | 到「在行」来约见我 posted on 2016-08-09 13:56 lexus ...

  6. Java中「与运算,或运算,异或运算,取反运算。」

    Java中「与运算,或运算,异或运算,取反运算.」 文章目录 Java中「与运算,或运算,异或运算,取反运算.」 Java中的「与运算(AND) & 」 规则 :都为1时才为1,否则为0 Ja ...

  7. 「实战」南京房价的秘密——小区价格篇「2」

    「实战」南京房价的秘密--准备篇 「实战」南京房价的秘密--小区价格篇「1」 案例二:南京历年小区建成情况-折线图 # 计算南京历年的小区建成数量 Jianzhu_tmp = Xiaoqu[" ...

  8. 「科技健身」必然无法取代教练,但将「淘汰」教练

    https://36kr.com/p/5144960.html 尽管对信奉「人体解剖学」的教练来说,「科技健身」仍被质疑或不值一提,但在海量的中国健身用户端,以EMS电击.人工智能为代表的「黑科技」健 ...

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

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

最新文章

  1. 《预训练周刊》第35期:零样本规划器的语言模型:为智能体提取可操作的知识、LaMDA:对话应用的语言模型...
  2. SQL Server 2008 R2 开启数据库远程连接
  3. android transform xml xsl,XslCompiledTransform.Transform 方法 (System.Xml.Xsl) | Microsoft Docs
  4. C指针原理(10)-编译原理-小型计算器实现
  5. css 注入,electron程序,如何在主进程远程页面中注入js及css?
  6. python画一个祝福别人生日快乐_生日贺卡祝福语(精选50条)
  7. MetaException(message:Hive Schema version 3.0.0 does not match metastore's schema version 1.2.0 Meta
  8. python 文本相似度_python实现余弦相似度文本比较
  9. JS中如何判断null
  10. 用.net动态创建类的实例 (转)
  11. Libpng源码的使用
  12. 【学数据结构】-----串(顺序串、堆串、块链串)(7000字总结+代码+图)
  13. i yfiygol hul hl
  14. Windows7安装包中打开WIM文件并提取系统文件
  15. 使用稿定设计如何给制作好的视频加音乐?
  16. 对前端特效感兴趣的同学可以留意下这些例子,有点意思
  17. Python绝技第一章 入门 python3实现密码破解
  18. c语言trim库函数用法,c语言编写trim 函数
  19. 程序员不破此关,难达优秀
  20. 计算机毕业设计springboot+vue+elementUI高考填报志愿综合参考系统

热门文章

  1. 面试时真能“坦白从宽”?
  2. 请收拾起忧伤,难过,不快,好好过日子。
  3. 用python画梵高星空-python 梵高
  4. python对文件的读操作方法有哪些-Python文件操作实例大全
  5. 财务大数据比赛有python吗-Python去做大数据开发,真的有前景吗?
  6. python下载安装教程3.8.0-windows中安装Python3.8.0的实现方法
  7. 儿童编程软件python-MRT7-Python少儿编程下载
  8. python爬虫吧-Python爬虫如何爬取贴吧内容
  9. python自学步骤-Python入门深度学习完整指南
  10. 上海python培训比较好的机构-上海python培训机构哪个好?