题目大意

求 $\sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(\lcm(i, j))$ 。
$ 1 \le n, m \le 10^6 $ 。

分析

不妨设 $ n \le m$ 。

$ \mu(\lcm(i, j)) = \mu(i) \mu(j) \mu(\gcd(i, j)) $

令 $S = \sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(\lcm(i, j))$

\begin{aligned}
S &= \sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(i) \mu(j) \mu(\gcd(i, j)) \\
&= \sum_{d = 1}^{n} \mu(d) \sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(i) \mu(j) [\gcd(i, j) = d] \\
&= \sum_{d = 1}^{n} \mu(d) \sum_{i = 1}^{n/d} \sum_{j = 1}^{m/d} \mu(id) \mu(jd) \color{red}{ [\gcd(i, j) = 1] } \\
&= \sum_{d = 1}^{n} \mu(d) \sum_{i = 1}^{n/d} \sum_{j = 1}^{m/d} \mu(id) \mu(jd) \color{red}{ \sum_{k \mid \gcd(i, j)} \mu(k) } \\
&= \sum_{d = 1}^{n} \mu(d) \sum_{i = 1}^{n/d} \sum_{j = 1}^{m/d} \mu(id) \mu(jd) \color{red}{ \sum_{k \mid i, k \mid{j}} \mu(k) } \\
&= \sum_{d = 1}^{n} \mu(d) \sum_{k = 1}^{n / d} \mu(k) \sum_{i = 1}^{n/d} \sum_{j = 1}^{m/d} \mu(id) \mu(jd) \sum_{k \mid i, k \mid{j}} 1 \\
&= \sum_{d = 1}^{n} \mu(d) \sum_{k = 1}^{n / d} \mu(k) \sum_{i = 1}^{n/(dk)} \sum_{j = 1}^{m/(dk)} \mu(idk) \mu(jdk)
\end{aligned}

上述红色部分即用莫比乌斯函数的性质 $\sum_{d\mid n} \mu(d) = [n = 1]$ 进行化简的套路。

固定 $dk$(即令 $t = dk$),有

\begin{aligned}
S = \sum_{t = 1}^{n} \color{blue}{ \sum_{d \mid t} \mu(d) \mu(t / d) } \sum_{i = 1}^{n/t} \mu(it) \sum_{j = 1}^{m/t} \mu(jt)
\end{aligned}

$\sum_{d \mid t} \mu(d) \mu(t / d)$ 即 $(\mu * \mu) (t)$ 。

预处理

对于 $t$ 从 $1$ 到 $n$,求

  • $\mu(t)$,用线性筛,复杂度 $O(n)$ 。
  • $\sum_{d \mid i} \mu(d) \mu(i / d)$,复杂度 $O(n \log n)$ 。
  • $\sum_{i = 1}^{n/t} \mu(it)$ 和 $ \sum_{j = 1}^{m/t} \mu(jt) $,复杂度 $O(m \log m)$ 。

HDU 6175 算术的更多相关文章

  1. HDU 4643 GSM 算术几何

    当火车处在换基站的临界点时,它到某两基站的距离相等.因此换基站的位置一定在某两个基站的中垂线上, 我们预处理出任意两基站之间的中垂线,对于每次询问,求询问线段与所有中垂线的交点. 检验这些交点是否满足 ...

  2. HDU 2515 Yanghee 的算术【找规律】

    题意:中文的题目 找规律可以发现 sum[1]=a[1]+a[2] sum[2]=a[1]+a[3] sum[n]=a[2]+a[3] 解出a[1],就可以求出其他的了 #include<ios ...

  3. 算术 HDU - 6715 (莫比乌斯反演)

    大意: 给定$n,m$, 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m\mu(lcm(i,j))$ 首先有$\mu(lcm(i,j))=\mu(i)\mu(j)\m ...

  4. 2017"百度之星"程序设计大赛 - 复赛1001&&HDU 6144 Arithmetic of Bomb【java大模拟】

    Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  6. HDU 4320 Arcane Numbers 1(质因子包含)

    http://acm.hdu.edu.cn/showproblem.php?pid=4320 题意: 给出A,B,判断在A进制下的有限小数能否转换成B进制下的有限小数. 思路: 这位博主讲得挺不错的h ...

  7. 5.Java基础_Java算术/字符/字符串/赋值运算符

    /* 算术/字符/字符串/赋值 运算符 */ public class OperatorDemo01 { public static void main(String[] args){ //算术运算符 ...

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. VS2015安装QT插件

    下载安装完后直接重新启动vs

  2. Spring 动态多数据源

    spring springmvc mybatis 多数据源配置时的重点: 1. 注意事务拦截器的配置 Spring中的事务管理与数据源是绑定的,一旦程序执行到Service层(事务管理)的话,由于在进 ...

  3. JS中对小数取整的函数,向上(下),四舍五入取整

    1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4, ...

  4. datetime模块的常用总结

    datetime模块 datetime模块提供了一些处理日期和时间的标准库.常用的有 datetime timedelta timezone 构造一个datetime对象 datetime() dat ...

  5. Celery分布式异步任务框架

    一.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统.专注于实时处理的异步任务队列,同时也支持定时任务 二.Celery架构 1.Celery的架构由三部分组成: 消 ...

  6. (转载)rabbitmq与springboot的安装与集成

    原文地址:https://segmentfault.com/a/1190000016991529 一.前言 RabbitMQ是一个开源的消息代理软件(面向消息的中间件),它的核心作用就是创建消息队列, ...

  7. 删除全局安装的npm包

    方法一 : 使用命令 npm uninstall -g 包名 方法二: 直接找到对应包删除 C:\Users\自己用户的文件夹\AppData\Roaming\npm 将对应的包删除即可

  8. 用node.js搭建一个静态资源站 html,js,css正确加载 跳转也完美实现!

    昨天买了一个服务器想着用来测试一些自己的项目,由于是第一次建站,在tomcat,linux,node.js间想了好久.最终因为node搭建比较方便没那么麻烦就决定用node.js来搭建网站项目. 搭建 ...

  9. 新建Spring boot 启动报错 Failed to auto-configure a DataSource

    今天学习springboot,使用idea创建项目.在选择组件时添加了mysq 然后在第一次启动的时候启动报错,错误信息如下: ***************************APPLICATI ...

  10. C++入门经典-例5.20-右值引用传递参数

    1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数 ...