HDU6715 算术(莫比乌斯反演)
莫比乌斯反演的变形。
对 \(\mu(lcm(i,j))\) 变换,易得 \(\mu(lcm(i,j)) = \mu(i)\cdot\mu(j)\cdot \mu(gcd(i,j))\) 。那么有:
\sum_{i=1}^{n} \sum_{j=1}^{m} \mu(lcm(i,j)) &= \sum_{i=1}^{n}\mu(i) \sum_{j=1}^{m}\mu(j)\cdot \mu(gcd(i,j)) \\
&= \sum_{d=1}^{\min(n,m)}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\mu(id)\mu(jd)\mu(d)[gcd(i,j)=1]
\end{split}\]
由于莫比乌斯函数的性质 \(\sum_{d\ |\ n}\mu(d)=[n=1]\) ,我们有:
\text{上式} = \sum_{d=1}^{\min(n,m)}\sum_{d_1 = 1}^{\min(n,m)/d}\sum_{i=1}^{n/dd_1}\sum_{j=1}^{m/dd_1}\mu(idd_1)\mu(jdd_1)\mu(d)\mu(d_1)
\end{split}\]
我们令 \(T = dd_1\) ,有:
\]
令 \(f(T) = \sum_{d|T} \mu(d)\mu(T/d)\) 。
令 \(g(T,N,M)=\sum_{i=1}^{N}\sum_{j=1}^{M}\mu(iT)\mu(jT)=(\sum_{i=1}^{N}\mu(iT))\cdot(\sum_{j=1}^{M}\mu(jT))\) 。
那么我们有:
\]
\(g(T,n/T,m/T)\) 可以在 \(O(n/T+m/T)\) 的时间内计算。
时间复杂度为 \(O(n\log n)\) 。
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn = 1000005;
int t, n, m, tot;
int mu[maxn], check[maxn], prime[maxn];
long long ans, f[maxn];
void init()
{
mu[1] = 1; tot = 0;
for(int i = 2; i <= 1000000; i++){
if(check[i] == 0){
mu[i] = -1;
prime[++tot] = i;
}
for(int j = 1; j <= tot && prime[j] * i <= 1000000; j++){
check[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
mu[i * prime[j]] = -1 * mu[i];
}
}
for(int i = 1; i <= 1000000; i++){
for(int j = 1; j * i <= 1000000; j++){
f[i * j] += mu[i] * mu[j];
}
}
}
int main()
{
init();
for(scanf("%d", &t); t--;){
scanf("%d%d", &n, &m);
ans = 0;
for(int T = 1; T <= min(n, m); T++){
if(f[T]){
long long g1 = 0, g2 = 0;
for(int i = 1; i * T <= n; i++) g1 += mu[i * T];
for(int i = 1; i * T <= m; i++) g2 += mu[i * T];
ans += f[T] * g1 * g2;
}
}
printf("%lld\n", ans);
}
return 0;
}
HDU6715 算术(莫比乌斯反演)的更多相关文章
- hdu1695 GCD(莫比乌斯反演)
题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...
- BZOJ 2154: Crash的数字表格 [莫比乌斯反演]
2154: Crash的数字表格 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2924 Solved: 1091[Submit][Status][ ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)
题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...
- 莫比乌斯函数筛法 & 莫比乌斯反演
模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...
- 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2371 Solved: 1143[Submit][Sta ...
- POI2007_zap 莫比乌斯反演
题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...
- hdu.5212.Code(莫比乌斯反演 && 埃氏筛)
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
- CSU 1325 莫比乌斯反演
题目大意: 一.有多少个有序数对(x,y)满足1<=x<=A,1<=y<=B,并且gcd(x,y)为p的一个约数: 二.有多少个有序数对(x,y)满足1<=x<=A ...
随机推荐
- c++构造顺序
1. 静态成员最先构造,按照静态成员初始化顺序,不是类里面的声明顺序 2. 父类构造 3. 非静态成员构造,按照类成员声明顺序,不是逗号初始化成员顺序 4. 自身构造函数 Demo: class Te ...
- idea配置less自动编译
参考: idea配置less自动编译 1. 电脑安装node.js环境: window下直接上官网下载node.msi文件下载安装即可 安装完成后在命令行执行如下命令表明安装成功 npm -v nod ...
- mongoose 数据库操作2
mongoose的内置的主要功能解说 除了定义文档结构和你要存储的数据类型外.模式(Schema)还用于下面定义: · Validators (异步和同步) · Defa ...
- SpringMVC简单介绍及执行
SpringMVC介绍 Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单.这些控制器一 ...
- 豆壳CMS本地安装教程
DouPHP安装教程 一.下载DouPHP程序. 解压后得到三个文件夹 将upload文件夹里面的内容复制到wamp的www的文件夹. 二.打开浏览器,输入127.0.0.1. 勾选后选择下一步 注意 ...
- #include <xxx.h>和#include "xxx.h"的区别
<>代表在系统目录下查找该头文件(系统定义头文件) ""代表在用户目录下查找该头文件(自定义头文件)
- ResultEntity
就是封装的一个map集合 省时省力好用 package com.ujy.utils; import java.util.HashMap; import java.util.Map; public c ...
- Linux架构之Nginx 动静分离
案例No.51:Nginx动静分离 1.web01配置静态资源 [root@web01 ~]# cd /etc/nginx/conf.d/#配置静态资源[root@web01 conf.d]# cat ...
- 19Redis
1.概念 redis是一款高性能的NOSQL系列的非关系型数据库 1.1什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非 ...
- mobilenetV3
1.MobilenetV3是通过NAS得到的,结合了v1,v2和MnasNet的结构,包括v1的dw,v2的linear bottleneck和逆残差结构, MnasNet的se结构(接在部分line ...