首先要知道一个式子:$\mu(lcm(i,j))=\mu(i)\cdot \mu(j)\cdot \mu(gcd(i,j))$(分是否为0讨论)
令$d=gcd(i,j)$,$n'=\lfloor n/d \rfloor$,$m'=\lfloor m/d \rfloor$
$\sum \mu(lcm(i,j))$
$=\sum_{d=1}^{n}\mu(d)\sum_{i=1}^{n'}\mu(id) \sum_{j=1}^{m'}\mu(jd)\sum_{g|i,g|j}\mu(g)$
令$n''=\lfloor n'/g \rfloor$,$m''=\lfloor m'/g \rfloor$
$=\sum_{d=1}^{n}\mu(d)\sum_{g=1}^{n'}\mu(g)\sum_{i=1}^{n''}\mu(igd) \sum_{j=1}^{m''}\mu(jgd)$
令$t=gd$
$=\sum_{t=1}^{n}\mu*\mu(t)\sum_{i=1}^{n''}\mu(it) \sum_{j=1}^{m''}\mu(jt)$
其中$\mu*\mu$和后半部分都是可以预处理的,预处理复杂度$o(nlnn)$,询问暴力枚举t,复杂度$o(Tn)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 1000005
4 int t,n,m,mu[N],vis[N],p[N],mu2[N];
5 vector<int>mu3[N];
6 long long ans;
7 int gcd(int x,int y){
8 if (!y)return x;
9 return gcd(y,x%y);
10 }
11 int main(){
12 mu[1]=1;
13 for(int i=2;i<N-4;i++){
14 if (!vis[i]){
15 p[++p[0]]=i;
16 mu[i]=-1;
17 }
18 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){
19 vis[i*p[j]]=1;
20 if (i%p[j]==0){
21 mu[i*p[j]]=0;
22 break;
23 }
24 mu[i*p[j]]=-mu[i];
25 }
26 }
27 for(int i=1;i<N-4;i++)
28 for(int j=1;j<=(N-5)/i;j++)mu2[i*j]+=mu[i]*mu[j];
29 for(int i=1;i<N-4;i++){
30 mu3[i].push_back(mu[i]);
31 for(int j=2;j<=(N-5)/i;j++)mu3[i].push_back(mu3[i][j-2]+mu[i*j]);
32 }
33 scanf("%d",&t);
34 while (t--){
35 scanf("%d%d",&n,&m);
36 ans=0;
37 if (n>m)swap(n,m);
38 for(int i=1;i<=n;i++)ans+=1LL*mu2[i]*mu3[i][n/i-1]*mu3[i][m/i-1];
39 printf("%lld\n",ans);
40 }
41 }

[hdu6715]算术的更多相关文章

  1. HDU6715 算术(莫比乌斯反演)

    HDU6715 算术 莫比乌斯反演的变形. 对 \(\mu(lcm(i,j))\) 变换,易得 \(\mu(lcm(i,j)) = \mu(i)\cdot\mu(j)\cdot \mu(gcd(i,j ...

  2. hdu6715 算术 2019百度之星初赛3-1003

    题目地址 http://acm.hdu.edu.cn/showproblem.php?pid=6715 题解 还是不会这题的容斥做法qwq.hjw当场写了个容斥A了.我推了个莫反,但是没反应过来我的式 ...

  3. C和指针 第五章 逻辑位移与算术位移

    对于操作数的左位移都是相同的,右边空出来的位置用0补齐. 但是对于右位移,对于有符号和无符号数是不一样的,最高位的1有两种处理方式.逻辑位移和算术位移. 逻辑位移:右移入位用0补齐 算术位移:右移入位 ...

  4. PHP中的运算符---算术运算符、逻辑运算符、赋值运算符、比较运算符

    1.算术运算符 常见的算术运算符 运算类型 运算符 举例 结果 取反运算 - -$a 返回$a的负值 加法运算 + $a + $b 返回$a与$b的和 减法运算 - $a - $b 返回$a与$b的差 ...

  5. 将 expression 转换为数据类型 int 时发生算术溢出

    将 expression 转换为数据类型 int 时发生算术溢出错误 2种快速处理方法 1.CONVERT(bigint, 字段名): 2.Cast(字段名 as decimal(18,2)): 这个 ...

  6. java中的算术运算符、赋值运算符、比较运算符、逻辑运算符、条件运算符

    一.算术运算符 算术运算符主要用于进行基本的算术运算,如加法.减法.乘法.除法等. Java 中常用的算术运算符: 其中,++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同滴 例 ...

  7. javascript运算符——算术运算符

    × 目录 [1]一元加 [2]一元减 [3]递增[4]递减[5]加法[6]减法[7]乘法[8]除法[9]求余 前面的话 javascript中的算术操作主要通过算术运算符来实现,本文将介绍算术运算符的 ...

  8. 汇编学习(四)——算术运算程序

    (一)跳转指令 一.无条件跳转指令(不管标志寄存器,执行到这句直接跳转) 1.段内直接跳转指令 (1)指令格式: JMP SHORT short_label; IP<--IP+DB,即代码直接跳 ...

  9. Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue【3】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...

随机推荐

  1. sqlite3 c++使用以及提高速率(一万条每秒左右)

    参考来源: sqlite3的C语言使用(三):https://www.leavesongs.com/C/sqlite3_3.html sqlite插入和查询效率提高方法及测试结果: http://bl ...

  2. logstash输出到rabbitmq

    场景 将应用日志文件发送到rabbitmq. filebeat 不支持rabbitmq作为输出.因此,需要先将文件由filebeat发送到logstash ,再由logstash 输出到rabbitm ...

  3. Golang/Java 实现无重复字符的最长子串 - LeetCode 算法

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-subs ...

  4. SpringBoot-MVC自动配置原理

    SpringBoot对SpringMVC做了哪些配置,如何扩展,如何定制? 文档地址 :https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/re ...

  5. 激活NX窗口的按钮

    原理:取得按钮名称以后,通过运行宏文件激活按钮 Imports System.IO Imports System.Runtime.InteropServices Imports NXOpen.Menu ...

  6. Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作

    5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...

  7. javascript高级程序设计第三版书摘

    在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...

  8. CSP-J 2021 复赛游记

    Day-1 啥也没干 晚上看了看洛谷的讨论,据说freopen在打开的最后要加 fclose(stdin);fclose(stdout); 不加也可.不过据说Linux在return 0之前不会自动关 ...

  9. 使用Servlet前Tomcat介绍

    虚拟目录的映射方式:让tomcat服务器自动映射tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录.换句话说,tomcat服务器webapps目录中的web应用,外 ...

  10. elf文件--基于《ctf竞赛权威指南pwn篇》

    1.ELF概念: ELF(Executable and Linkable Format),即"可执行可链接格式",最初由UNIX系统实验室作为应用程序二进制接口(Applicati ...