Problem

对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。

1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000

Sub problem

设Ans(i,j)表示有多少个数对(x,y),满足x≤i,c≤y≤j,且gcd(x,y) = k

我们可以先求出Ans(b,d),Ans(b,c−1),Ans(a−1,d),Ans(a−1,c−1),

然后ans=Ans(b,d)−Ans(b,c−1)−Ans(a−1,d)+Ans(a−1,c−1)。

那么问题就变成了如何求Ans(n,m)。

Discuss

讨论一下Ans(n,m)如何求,其中n<m。

先设f(k),表示有多少个数对(x,y),满足x≤n,c≤y≤m,且gcd(x,y) = k

显然Ans(n,m)=f(k)。

再设g(k),表示多少个数对(x,y),满足x≤n,c≤y≤m,且k|gcd(x,y)

因为k|gcd(x,y),所以设x=k∗x′,y=k∗y′;

由于x′只能取1...⌊nk⌋,y′只能取1...⌊mk⌋

所以

g(k)=⌊nk⌋∗⌊mk⌋

同时,我们会有

g(k)=∑i=1⌊nk⌋f(i∗k)(1)

此时,我们将g(k)用f(k)表示,并且g(k)是容易求出结果的。


Mobius

正片开始

我们非常功利地得出结论:

正当我们遇到这种式子时,

g(i)=∑d|if(d)(2)

g(i)=∑j=1⌊nk⌋f(i∗j)(3)

当g[d]是积性函数,我们可以将上式转化为,

f(i)=∑d|ig(d)∗μ(id)
f(i)=∑j=1⌊nk⌋g(i∗j)∗μ(j)

其中

μ(x)=⎧⎩⎨⎪⎪1,(−1)k,0,x=1x=∏ki=1pi,pi∈Potherwise


Discuss:μ的性质

(1)μ是积性函数

可以证明,μ函数也是积性函数,所以μ可以通过线性筛法预处理,如下代码。

miu[1]=1;
for (i=2;i<maxn;i++){
if (!bz[i]){
p[++p[0]]=i;
miu[i]=-1;
}
for (j=1;j<=p[0];j++){
k=i*p[j];
if (k>=maxn) break;
bz[k]=true;
if (i%p[j]==0){
miu[k]=0;
break;
}else miu[k]=-miu[i];
}
}

(2)μ的“和性质”

∑d|nμ(d)={0,1,n=1n>1

Back to the Problem

题目的式子是

g(k)=∑i=1⌊nk⌋f(i∗k)(1)

跟(2)有异曲同工之妙,

所以

f(k)=∑i=1⌊nk⌋g(i∗k)∗μ(i)=∑i=1⌊nk⌋⌊nik⌋∗⌊mik⌋∗μ(i)

然而,这并没有什么卵用,我们仍然过不了。

还能优化??

Deeplier discuss

我们发现,

其实⌊nik⌋∗⌊mik⌋很多时候是相同的取值。

所以我们可以将相同值的⌊nik⌋∗⌊mik⌋合并一起来计算,来优化时间复杂度。

显然⌊nik⌋的取值最多有2∗n√种,

所以可以把时间复杂度优化到O(2∗n√+2∗m−−√)一次询问。

Ending

至此,我们已解决了这道题。

原题Code

Proving

μ的“和性质”

求证:

∑d|nμ(d)={0,1,n=1n>1

证明:

n=1时显然;

讨论n>1的情况,

因为μ的定义,

μ(x)=⎧⎩⎨⎪⎪1,(−1)k,0,x=1x=∏ki=1pi,pi∈Potherwise

所以∑d|nμ(d)中,只有当d的任意质因子的指数不能超过1时,μ(d)才会对产生贡献。

我们设n的质因子个数为q个。

那么,

∑d|nμ(d)=∑i=0qCiq∗(−1)i

我们观察一下杨辉三角:

11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1...

显然的是,当q是偶数时,由杨辉三角的对称性,

∑d|nμ(d)=∑i=0qCiq∗(−1)i=0

现在考虑q(q>1)是奇数的情况,

∑i=0qCiq∗(−1)i=C0q−Cqq+∑i=1q−1Ciq∗(−1)i=C0q−Cqq+∑i=1q−1(Ci−1q−1+Ciq−1)∗(−1)i=C0q−Cqq+∑i=1q−1Ci−1q−1∗(−1)i+∑i=1q−1Ciq−1∗(−1)i=∑i=0q−1Ciq−1∗(−1)i+1+∑i=0q−1Ciq−1∗(−1)i

由q−1是偶数,综上,

∑d|nμ(d)=∑i=0qCiq∗(−1)i=0

得证。

证明反演

求证:

g(i)=∑d|if(d)⇒f(i)=∑d|ig(d)∗μ(id)

证明:

∑d|ig(d)∗μ(id)=∑d|iμ(id)∑d′|df(d′)

这里经历一个重要的过程:转换主体,

感性地想,所有的μ(id)都与f(d′)相乘过,其中d′|d;

反过来,那么所有的f(d′)都与μ(id)相乘过,其中d′|d。

所以,

∑d|iμ(id)∑d′|df(d′)=∑d′|if(d′)∑d′|d,d|iμ(id)

令x=id,则d=ix,那么

∑d′|if(d′)∑d′|d,d|iμ(id)=∑d′|if(d′)∑d′|ix,ix|iμ(x)=∑d′|if(d′)∑x|id′μ(x)

由μ的“和性质”,

当d′!=i时,则id′>1,所以∑x|id′μ(x)=0;

当d′=i时,则id′=1,所以∑x|id′μ(x)=1。

所以

∑d|if(d)∗μ(id)=∑d′|if(d′)∑x|id′μ(x)=f(i)

综上,

f(i)=∑d|ig(d)∗μ(id)

得证。


另一个变式(3)类似。

True Ending

至此,Mobius反演已证明完毕。

【Mobius绮丽的辗转】莫比乌斯反演的更多相关文章

  1. 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)

    首先我们来看一道题  BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...

  2. (暂时弃坑)(半成品)ACM数论之旅18---反演定理 第二回 Mobius反演(莫比乌斯反演)((づ ̄3 ̄)づ天才第一步,雀。。。。)

    莫比乌斯反演也是反演定理的一种 既然我们已经学了二项式反演定理 那莫比乌斯反演定理与二项式反演定理一样,不求甚解,只求会用 莫比乌斯反演长下面这个样子(=・ω・=) d|n,表示n能够整除d,也就是d ...

  3. 欧拉函数线性求解以及莫比乌斯反演(Mobius)

    前言 咕咕了好久终于来学习莫反了 要不是不让在机房谁会发现数学一本通上有这么神奇的东西 就是没有性质的证明 然后花了两节数学课证明了一遍 舒服- 前置知识:欧拉函数,二项式定理(组合数) 会欧拉函数的 ...

  4. UVa 11014 (莫比乌斯反演) Make a Crystal

    这个题是根据某个二维平面的题改编过来的. 首先把问题转化一下, 就是你站在原点(0, 0, 0)能看到多少格点. 答案分为三个部分: 八个象限里的格点,即 gcd(x, y, z) = 1,且xyz均 ...

  5. HDU 1695 (莫比乌斯反演) GCD

    题意: 从区间[1, b]和[1, d]中分别选一个x, y,使得gcd(x, y) = k, 求满足条件的xy的对数(不区分xy的顺序) 分析: 虽然之前写过一个莫比乌斯反演的总结,可遇到这道题还是 ...

  6. UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.

    题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...

  7. hdu 1695 GCD 莫比乌斯反演入门

    GCD 题意:输入5个数a,b,c,d,k;(a = c = 1, 0 < b,d,k <= 100000);问有多少对a <= p <= b, c <= q <= ...

  8. uva11426(莫比乌斯反演)

    传送门:GCD Extreme (II) 题意:给定n(n<=4000000),求G G=0 for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) ...

  9. SPOJ PGCD(莫比乌斯反演)

    传送门:Primes in GCD Table 题意:给定两个数和,其中,,求为质数的有多少对?其中和的范围是. 分析:这题不能枚举质数来进行莫比乌斯反演,得预处理出∑υ(n/p)(n%p==0). ...

随机推荐

  1. python学习笔记4.1_检测和过滤异常值

    1.查看数据分布data.describe() 2.找出某列中符合筛选条件的值 3.找出符合筛选条件的行 4.用np.sign(data)*3设置绝对值的标准 data[np.abs(data)> ...

  2. activiti 连线

    实际使用中工作流往往不是一条直线进行下去,例如请假的话可以部门经理直接同意,或者报总经理同意,流程图示意如下. 可以看到,面对一个事情,重要的才要总经理审批否则仅部门经理审批即可.因此在完成任务的时候 ...

  3. JZOJ5918【NOIP2018模拟10.20】Car

    题目 最近比较懒,题目描述都直接截图了. 题目大意 给你一棵树,还有树上的几条路径,一条路径上的点到路径上其它任意点的代价为111.然后是一堆询问,问从一个点到另一个点的最小代价. 思路 一开始做这题 ...

  4. JZOJ5898【NOIP2018模拟10.6】距离统计

    题目 题目大意 给你带边权的树,然后有多高询问,每次询问距离某个点第kkk近的节点的距离. 思考 一眼看下去,首先就是想到如何动态的区间第K大,还要支持区间修改-- 于是想了半天,觉得不可做-- 最终 ...

  5. c++容器的操作方法总结

    一.map 1.创建 typedef map<int,string> descrbe_map_; descrbe_map_ devMap; 或者 map<string,string& ...

  6. Ajax 导出Excel 方式

    1.使用iframe 加载 使用get方式 <iframe id="comdownshow" height="0" width="0" ...

  7. JS对象和数组深浅拷贝总结②

    在实际开发中遇到过太多次深拷贝浅拷贝的问题.总结一下~ JS数据存储和深浅拷贝实际运用① 这是之前写过的一篇文章,解决浅拷贝深拷贝的问题只说了一种方法,今天来补充一下. 介绍深拷贝和浅拷贝都在上一篇文 ...

  8. bootstrap字体图标在IE上不显示

    最简单的办法就是直接下载最新的bootstrap.css替换掉旧的. 但是由于我做的项目直接替换会出现样式冲突问题,因此只好慢慢找是什么属性导致图标不显示,最后找到了解决办法: 1.首先保字体文件的位 ...

  9. 分享非常漂亮的WPF界面框架源码及插件化实现原理

      在上文<分享一个非常漂亮的WPF界面框架>中我简单的介绍了一个界面框架,有朋友已经指出了,这个界面框架是基于ModernUI来实现的,在该文我将分享所有的源码,并详细描述如何基于Mod ...

  10. PAT甲级——A1011 World Cup Betting

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...