BZOJ_2820_YY的GCD_莫比乌斯反演
BZOJ_2820_YY的GCD_莫比乌斯反演
题意&分析:
$\sum\limits_pis[p]\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)=p]$
$=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}[gcd(i,j)=1]$
$=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}[gcd(i,j)=1]$
$=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}\sum\limits_{d|gcd(i,j)}\mu(d)$
$=\sum\limits_pis[p]\sum\limits_{d=1}^{\lfloor \frac{n}{p}\rfloor}\mu(d)\sum\limits_{i=1}^{\lfloor \frac{n}{dp}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{dp}\rfloor}$
$=\sum\limits_{Q=1}^{n}\lfloor \frac{n}{Q}\rfloor\lfloor\frac{m}{Q}\rfloor\sum\limits_{p|Q}is[p]\mu(\lfloor\frac{Q}{p}\rfloor)$
$f(n)=\sum\limits_{p|n}is[p]\mu(\lfloor\frac{n}{p}\rfloor)$
首先$f[i]$非积性,但可以通过μ处理,所以我们考虑线筛
1.当$i$为质数时$f[i]=1$;
2.当$i$%$p==0$时
$f(i*p)=\sum\limits_{d|i}is[d]\mu(i*p/d)$
当$d!=p$时$i*p/d$有两个以上的$p$,贡献为$0$,因此此时$f(i*p)=\mu(i)$
3.当$i$%$p!=0$时$i$与$p$互质
$f(i*p)=\sum\limits_{d|i}is[d]\mu(i*p/d)+\sum\limits_{d|p}is[d]\mu(i*p/d)$
$=f(i)*\mu(p)+f(p)*\mu(i)$
$=\mu(i)-f(i)$
再记录下f[i]的前缀和,分块计算
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define LL long long
int prime[4000010],vis[10000100],miu[10000100],f[10000100],sum[10000100],cnt;
int T,n,m;
inline void init()
{
miu[1]=1;
for(int i=2;i<=10000000;i++)
{
if(!vis[i])
{
miu[i]=-1;
f[i]=1;
prime[++cnt]=i;
}
for(int j=1;j<=cnt&&i*prime[j]<=10000000;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)
{
miu[i*prime[j]]=0;
f[i*prime[j]]=miu[i];
break;
}
miu[i*prime[j]]=-miu[i];
f[i*prime[j]]=miu[i]-f[i];
}
sum[i]=sum[i-1]+f[i];
}
}
int main()
{
init();
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);
int lst;
LL ans=0;
for(int i=1;i<=n;i=lst+1)
{
lst=min(n/(n/i),m/(m/i));
ans+=1ll*(sum[lst]-sum[i-1])*(n/i)*(m/i);
}
printf("%lld\n",ans);
}
}
BZOJ_2820_YY的GCD_莫比乌斯反演的更多相关文章
- 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 ...
随机推荐
- DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2 (转载)
http://blog.csdn.net/xiyuan1999/article/details/5706230 DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, ...
- Python字符串全解
1.字符串大小写转换 def strChange(): str = "niuXinLong@163.com" print("原字符串:" + str) prin ...
- Day9 进程同步锁 进程队列 进程池 生产消费模型 进程池 paramike模块
进程同步锁: 当运行程序的时候,有可能你的程序同时开多个进程,开进程的时候会将多个执行结果打印出来,这样的话打印的信息都是错乱的,怎么保证打印信息是有序的呢? 其实也就是相当于让进程独享资源. fro ...
- 深度学习之 TensorFlow(二):TensorFlow 基础知识
1.TensorFlow 系统架构: 分为设备层和网络层.数据操作层.图计算层.API 层.应用层.其中设备层和网络层.数据操作层.图计算层是 TensorFlow 的核心层. 2.TensorFlo ...
- 新一代大数据处理引擎 Apache Flink
https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展 这几年大数据的飞速发 ...
- dijkstra算法:寻找到全图各点的最短路径
dijkstra算法介绍:即迪杰斯特拉算法,是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,是一种广度优先 ...
- .NetCore获取json文件配置内容
.netcore中的数据配置及内容用了json文件代替了之前framework的xml文件,那么json中的数据该怎么获取呢?下面讲解json文件在.net core中的获取方法. 首先,新建一个.n ...
- springboot中使用分页,文件上传,jquery的具体步骤(持续更新)
分页: pom.xml 加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <arti ...
- 【Java入门提高篇】Day16 Java异常处理(上)
当当当当当当,各位看官,好久不见,甚是想念. 今天我们来聊聊Java里的一个小妖精,那就是异常. 什么是异常?什么是异常处理? 异常嘛,顾名思义就是不正常,(逃),是Java程序运行时,发生的预料之外 ...
- php判断图片是否存在的几种方法
在我们日常的开发中,经常需要用到判断图片是否存在,存在则显示,不存在则显示默认图片,那么我们用到的判断有哪些呢?今天我们就来看下几个常用的方法: 1.getimagesize()函数 getimage ...