题目链接

  真是神TM莫比乌斯

  首先来看一个神奇的结论:求gcd(x,y)==k的对数,其中1<=x<=n,1<=y<=m

  等同于求gcd(x,y)==1的对数,其中1<=x<=n/k,1<=y<=m/k

  然后这题就变成了求gcd(x,y)==1的对数,其中1<=x<=n/k,1<=y<=m/k

  我们再把莫比乌斯反演的定义copy一下

  设有函数$F(n),f(n)$定义在非负整数集合上

  有$F(n)=\sum\limits_{d|n}^{}f(d)$

  那么则有$f(n)=\sum\limits_{d|n}^{}miu(d)F(\frac{n}{d})$

  或者说如果有$F(n)=\sum\limits_{n|d}^{}f(d)$

  那么$f(n)=\sum\limits_{n|d}^{}miu(\frac{d}{n})F(d)$

  miu函数定义如下:

  若d=1,miu(d)=1;

  若d=$P_{1}P_{2}.......P_{n}$,则miu(d)=$(-1)^{k}$;

  其他情况下miu(d)=0.

  我们这道题使用第二种形态。

  我们设F(n)为gcd(x,y)==n的公倍数的x,y对数,f(n)为gcd(x,y)==n的x,y对数。

  则有$F(n)=\sum\limits_{n|d}^{}f(d)$

  根据莫比乌斯反演得到$f(n)=\sum\limits_{n|d}^{}miu(\frac{d}{n})F(d)$

  $F(d)=\frac{n}{d}\frac{m}{d}$显然

  且本题中我们要求的是f(1)

  那么原式化为$f(1)=\sum\limits_{i=1}^{min(n,m)}miu(i)\frac{n}{i}\frac{m}{i}$

  那么本题我们做完了吗?答案明显是否定的。

  因为你直接for一遍i会超时。

  观察到for i in 1~n 有一段区间使得n/i的取值是相同的

  而且这个取值最多只有$\sqrt[]{n}$种

  所以应用数论的分块优化

  贴上代码

  

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<cmath> using namespace std; inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long miu[];
long long prime[],tot;
bool f[]; long long count(long long n,long long m){
long long top=min(n,m);long long ans=;
long long x=;
while(x<=top){
long long y=min(n/(n/x),m/(m/x));
ans+=(long long)(miu[y]-miu[x-])*(n/x)*(m/x);
x=y+;
}
return ans;
} int main(){
miu[]=;
for(long long i=;i<=;++i){
if(!f[i]){
prime[++tot]=i;
miu[i]=-;
}
for(long long j=;j<=tot&&prime[j]*i<=;++j){
f[i*prime[j]]=;
if(i%prime[j]) miu[i*prime[j]]=-miu[i];
else break;
}
}
for(long long i=;i<=;++i) miu[i]+=miu[i-];
long long T=read();
while(T--){
long long n=read(),m=read(),e=read();
n/=e;m/=e;
if(n>m) swap(n,m);
printf("%lld\n",count(n,m));
}
return ;
}

【Luogu】P3455Zip-Queries(莫比乌斯反演)的更多相关文章

  1. BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)

    手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...

  2. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)

    手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csdn.net/suncongbo/article/details/78819470 URL: (Lu ...

  3. [jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)

    题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注: ...

  4. [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)

    题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算​$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...

  5. BZOJ 5330 Luogu P4607 [SDOI2018]反回文串 (莫比乌斯反演、Pollard Rho算法)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...

  6. [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)

    题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...

  7. [Luogu P3455] [POI2007]ZAP-Queries (莫比乌斯反演 )

    题面 传送门:洛咕 Solution 这题比这题不懂简单到哪里去了 好吧,我们来颓柿子. 为了防止重名,以下所有柿子中的\(x\)既是题目中的\(d\) 为了方便讨论,以下柿子均假设\(b>=a ...

  8. Luogu P2257 YY的GCD 莫比乌斯反演

    第一道莫比乌斯反演...$qwq$ 设$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]$ $F(n)=\sum_{n|d}f(d)=\lfloor \frac{N ...

  9. 【Luogu】P2303Longge的问题(莫比乌斯反演)

    就让我这样的蒟蒻发一个简单易想的题解吧!!! 这题我一开始一看,woc这不是莫比乌斯反演么,推推推,推到杜教筛,输出结果一看不对 emmm回来仔细想想……woc推错了? 然后撕烤半天打了个暴力,A了 ...

  10. 【Luogu】P3327约数个数和(莫比乌斯反演+神奇数论公式)

    题目链接 真TM是神奇数论公式. 注明:如无特殊说明我们的除法都是整数除法,向下取整的那种. 首先有个定理叫$d(ij)=\sum\limits_{i|n}{}\sum\limits_{j|m}{}( ...

随机推荐

  1. uvm_reg_model——寄存器模型(一)

    对于一个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作.UVM提供标准的基类库,UVM的寄存器模型来自于继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器 ...

  2. CentOS 6.5 下,phpmyadmin 建库无权限

    阿里云主机.用root进入phpMyadmin,居然没有权限建库. 上网查到命令: grant all privileges on *.* to root@'%' identified by &quo ...

  3. js获取元素的页面坐标

    一.DOM中各种宽度.高度 二.DOM中的坐标系 JS获取div元素的宽度 offsetWidth=width+padding-left+padding-right+border-left+borde ...

  4. mysqldumpslow及explain使用简介

  5. 洛谷 P2347 砝码称重 != codevs 2144

    题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入输出格式 输入格式: 输入方式:a1 a2 a3 a4 a5 a6 (表示1g砝码有a1个,2g砝 ...

  6. x-shell配置远程连接

    1. 打开x-shell 2. 配置编译属性 3. 配置用户的身份证信息 5. 配置完成之后选择连接

  7. CentOS 6.7安装(一)

    CentOS 6.7安装 1.将光盘放入服务器,选择从光盘启动,选择“Install or upgrade an existing system”,并跳过光盘测试. 2.选择安装过程中使用的语言,默认 ...

  8. 看paper的网址

    http://www.arxiv-sanity.com/ https://scirate.com/ google搜cvpr open access.iccv open access

  9. shelll脚本,常见的脚本题目。

    [root@localhost wyb]# cat 2quan.sh #!/bin/bash #写一个脚本,先要求输入用户名,然后让他输入一个数字,输的如果是数字给输出yes,不是数字,输出no #然 ...

  10. 【计数】51nod1677 treecnt

    要将答案看做是小问题的贡献和 Description 给定一棵n个节点的树,从1到n标号.选择k个点,你需要选择一些边使得这k个点通过选择的边联通,目标是使得选择的边数最少. 现需要计算对于所有选择k ...