题目

链接

有$50000$次查询,对于给定的整数$a,b$和$d$,有多少正整数对$x$和$y$,满足$x \leq a$,$y \leq b$,并且$gcd(x, y)=d$。$1 \leq k \leq a,b \leq 50000$.

分析

求有多少对$(x,y)$满足$x \leq a$,$y \leq b$,并且 $gcd(x, y)=d$,等价于求有多少对$(x, y)$满足$x \leq \frac{a}{d}, y \leq \frac{b}{d}$并且$x, y$互质.

设$D(a, b, d)$表示满足$x \leq a, y \leq b$且$d | gcd(x, y)$的二元组的对数。显然只要$x, y$都是$d$的倍数即可。$1 \sim a$之间$d$的倍数有$\left \lfloor \frac{a}{d} \right \rfloor$个。故$D(a, b, d) = \left \lfloor \frac{a}{d} \right \rfloor \left \lfloor \frac{b}{d} \right \rfloor$.

设$F(a, b)$ 表示满足$x \leq a$,$y \leq b$ 且 $x, y$互质的二元组的对数。根据容斥原理:

$$F(a,b)=\sum_{i=1}^{min(a,b)} \mu(i)*D(a,b,i)$$

上式的意思是,没有任何限制的二元组总数为 $D(a, b, 1)=a*b$,应该减去$gcd(a, b)$是$2,3,5 \cdots$的倍数的二元组数量,这样又重复减掉了$gcd(a, b)$既是$2$的倍数、又是$3$的倍数的二元组数量,应该加回来。依此类推,$D(a, b, i)$的系数恰好就是莫比乌斯函数.

由整除分块的知识,我们知道:$\forall i \in [x, min(\left \lfloor a/ \left \lfloor a/x \right \rfloor \right \rfloor), \left \lfloor b/\left \lfloor b/x \right \rfloor \right \rfloor]$,$D(a,b,i)=\left \lfloor a/i \right \rfloor\left \lfloor b/i \right \rfloor$ 的值都是相等的,预处理出莫比乌斯函数的前缀和,即可直接累加这一段的答案。这样的段只有$O(2\sqrt{min(a,b)})$个.

 #include<bits/stdc++.h>
using namespace std; const int maxn = + ;
int miu[maxn],vis[maxn], smiu[maxn]; void getmiu(int n)
{
for(int i=;i <= n;i++) miu[i]=, vis[i];
for(int i=;i <= n;i++)
{
if(vis[i]) continue;
miu[i] = -; //i没有被访问,说明i是素数
for(int j = *i; j <= n;j += i)
{
vis[j] = ;
if(j % (i*i) == ) miu[j] = ; //含有平方因子
else miu[j] *= -;
}
} for(int i = ;i <= n;i++) smiu[i] = smiu[i-] + miu[i];
} int f(int a, int b)
{
int ans = ;
for(int l=, r; l <= min(a, b);l = r+)
{
r = min(a / (a / l), b / (b / l));
ans += (smiu[r] - smiu[l-]) * (a/l) * (b/l); //按段累加
//printf("%d %d\n", l, r);
}
printf("%d\n", ans);
} int main()
{
int T;
scanf("%d", &T);
getmiu(maxn);
//for(int i=1; i <= 20;i++) printf("%d\n", miu[i]);
while(T--)
{
int a, b, k;
scanf("%d%d%d", &a, &b, &k);
f(a/k, b/k);
}
return ;
}

BZOJ1101——莫比乌斯函数&&入门的更多相关文章

  1. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3028  Solved: 1460[Submit][Sta ...

  2. 51nod 1244 莫比乌斯函数之和

    题目链接:51nod 1244 莫比乌斯函数之和 题解参考syh学长的博客:http://www.cnblogs.com/AOQNRMGYXLMV/p/4932537.html %%% 关于这一类求积 ...

  3. 51nod 1240 莫比乌斯函数

    题目链接:51nod 1240 莫比乌斯函数 莫比乌斯函数学习参考博客:http://www.cnblogs.com/Milkor/p/4464515.html #include<cstdio& ...

  4. 51nod1244 莫比乌斯函数之和

    推公式.f[n]=1-∑f[n/i](i=2...n).然后递归+记忆化搜索.yyl说这叫杜教筛?时间复杂度貌似是O(n 2/3)的? #include<cstdio> #include& ...

  5. 51nod1240莫比乌斯函数

    莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数).   ...

  6. [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】

    题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...

  7. 数学(莫比乌斯函数):BZOJ 2440 完全平方数

    Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他数的热爱. 这 ...

  8. 51nod 1244 莫比乌斯函数之和(杜教筛)

    [题目链接] http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 [题目大意] 计算莫比乌斯函数的区段和 [题解] 利 ...

  9. BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )

    先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...

随机推荐

  1. IDEA 启动项目 很慢,总会到某个点进行延迟卡顿。

    最开始的我解决的方式 clean 项目 忙完后,闲暇时间想起这个问题,然后进行 面向百度,发现了问题所在 参考文档:https://www.cnblogs.com/zhangzhonghui/p/11 ...

  2. kube-dns和coreDNS的使用

    内部服务发现 前面我们给大家讲解了 Service 的用法,我们可以通过 Service 生成的 ClusterIP(VIP)来访问 Pod 提供的服务,但是在使用的时候还有一个问题:我们怎么知道某个 ...

  3. volatile 关键字(修饰变量)

    目录 volatile 关键字(修饰变量) 1. 含义 2. 作用 3. 如何保证可见性 4. 如何禁止指令重排序优化 5. volatile 是不安全的 6. volatile 不适用场景 vola ...

  4. 通过ADB调试安卓程序

    ADB,即 Android Debug Bridge,它是Android开发/测试人员不可替代的强大工具. 1.下载ADB后,将以下四个文件放到某个文件夹下即可.因为打开Cmd默认路径是 C:\Use ...

  5. 作业3:java对象模型

    一 对象表示机制 1 Hotsplot JVM内部对象表示系统 (1)OOP-Klass二分模型 OOP:Ordinary Object Pointer 或者OOPS.即普通对象指针,描述对象实例信息 ...

  6. jemeter鬓发压力测试包

    使用: 为子线程添加响应时间:https://www.cnblogs.com/duanxz/p/5464993.html 结果查看分析:聚合报告在监听器里面: https://wenku.baidu. ...

  7. 检索 COM 类工厂中 CLSID 为 {13C28AD0-F195-4319-B7D7-A1BDAA329FB8} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

    上午前客户突然来电说换了台电脑重新装的程序不能正常用,发来错误提示如图: 这错误显然不是程序错误,异常写的很清楚 ,COM组件没注册,搜一下CLSID, 原来是GridReport++ ,参考地址:  ...

  8. EFcore的 基础理解<二> shadow 特性

    接着上一篇.在MyEFTestContext 类中添加这个方法 protected override void OnModelCreating(ModelBuilder modelBuilder) { ...

  9. [转载]AdaBoost算法

    [转载]AdaBoost算法 原文:https://blog.csdn.net/v_july_v/article/details/40718799 这里就不转载了,到原文看吧.但是有几点可以注意下: ...

  10. 浅谈Promise原理与应用

    在JavaScript中,所有代码都是单线程.由于该“缺陷”,JavaScript在处理网络操作.事件操作时都是需要进行异步执行的.AJAX就是一个典型的异步操作 对于异步操作,有传统的利用回调函数和 ...