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}{n} \rfloor \lfloor \frac{M}{n} \rfloor$
$f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)$
$ans=\sum_{p\in pri}f(p)$
$=\sum_{p\in pri}\sum_{p|d}\mu(\frac{d}{p})F(d)$
$=\sum_{d=1}^{min(N,M)}\sum_{p\in pri且p|d}\space\mu(\frac{d}{p})F(d)$
$=\sum_{d=1}^{min(N,M)}F(d)\sum_{p\in pri且p|d}\space\mu(\frac{d}{p})$
$=\sum_{d=1}^{min(N,M)}\lfloor \frac{N}{d} \rfloor \lfloor \frac{M}{d} \rfloor \sum_{p\in pri且p|d}\space\mu(\frac{d}{p})$
对于$\lfloor \frac{N}{d} \rfloor \lfloor \frac{M}{d} \rfloor$用整除分块,对于$a(d)=\sum_{p\in pri且p|d}\space\mu(\frac{d}{p})$用一个类似埃筛的思路把$a(d)$筛出来然后做一个前缀和。。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<vector>
#include<queue>
#include<map>
#include<set>
#define ll long long
#define R register int
using namespace std;
namespace Fread {
static char B[<<],*S=B,*D=B;
#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
}using Fread::g;
int t,n,m,cnt,pri[],a[],mu[];
bool v[]; long long sum[];
inline void MU(int n) { mu[]=;
for(R i=;i<=n;++i) {
if(!v[i]) pri[++cnt]=i,mu[i]=-;
for(R j=;j<=cnt&&i*pri[j]<=n;++j) {
v[i*pri[j]]=true;
if(i%pri[j]==) break;
else mu[i*pri[j]]=-mu[i];
}
} for(R j=;j<=cnt;++j) for(R i=;i*pri[j]<=n;++i) a[i*pri[j]]+=mu[i];
for(R i=;i<=n;++i) sum[i]=sum[i-]+(ll)a[i];
}
signed main() {
#ifdef JACK
freopen("NOIPAK++.in","r",stdin);
#endif
MU(); t=g(); while(t--) { register long long ans=;
n=g(),m=g(); n>m?(void)(swap(n,m)):(void);
for(R l=,r;l<=n;l=r+) {
r=min(n/(n/l),m/(m/l));
ans+=(ll)(n/l)*(m/l)*(sum[r]-sum[l-]);
}printf("%lld\n",ans);
}
}
2019.06.09
Luogu P2257 YY的GCD 莫比乌斯反演的更多相关文章
- [Luogu P2257] YY的GCD (莫比乌斯函数)
题面 传送门:洛咕 Solution 推到自闭,我好菜啊 显然,这题让我们求: \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]\) 根 ...
- 洛谷P2257 YY的GCD 莫比乌斯反演
原题链接 差不多算自己推出来的第一道题QwQ 题目大意 \(T\)组询问,每次问你\(1\leqslant x\leqslant N\),\(1\leqslant y\leqslant M\)中有多少 ...
- BZOJ 2820 luogu 2257 yy的gcd (莫比乌斯反演)
题目大意:求$gcd(i,j)==k,i\in[1,n],j\in[1,m] ,k\in prime,n,m<=10^{7}$的有序数对个数,不超过10^{4}次询问 莫比乌斯反演入门题 为方便 ...
- 洛谷 - P2257 - YY的GCD - 莫比乌斯反演 - 整除分块
https://www.luogu.org/problemnew/show/P2257 求 \(n,m\) 中 \(gcd(i,j)==p\) 的数对的个数 求 $\sum\limits_p \sum ...
- P2257 YY的GCD (莫比乌斯反演)
题意:求\[\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j) = prim]\] 题解:那就开始化式子吧!! \[f(d) = \sum_{i=1}^{n}\sum_{j=1 ...
- [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)
[BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...
- BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1624 Solved: 853[Submit][Status][Discu ...
- Luogu P2257 YY的GCD
莫比乌斯反演第一题.莫比乌斯反演入门 数论题不多BB,直接推导吧. 首先,发现题目所求\(ans=\sum_{i=1}^n\sum_{j=1}^m [\gcd(i,j)=prime]\) 考虑反演,我 ...
- 【题解】Luogu P2257 YY的GCD
原题传送门 这题需要运用莫比乌斯反演(懵逼钨丝繁衍) 显然题目的答案就是\[ Ans=\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)=prime]\] 我们先设设F(n)表示满足\ ...
随机推荐
- ZOJ 3329 One Person Game:期望dp【关于一个点成环——分离系数】
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3329 题意: 给你面数分别为k1,k2,k3的三个骰子. 给定a ...
- julia
版本还不成熟,等成熟了再完整的看看吧.
- 剑指OFFER18 判断一个二叉树的子树
public class a18_IsSubTree { public static boolean hasSubTree(TreeNode treeRoot1, TreeNode treeRoot2 ...
- OpenCV——旋转模糊
参考来源: 学习OpenCV:滤镜系列(5)--径向模糊:缩放&旋转 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #defi ...
- POJ3728The merchant (倍增)(LCA)(DP)(经典)(||并查集压缩路径?)
There are N cities in a country, and there is one and only one simple path between each pair of citi ...
- IE botton 点击文字下沉
IE点击文字下沉这个应该是浏览器自带的,只要是用button标签应该都是避免不了的. 如果实在接受不了的话,用一个元素比如div.p等块级元素或者是i.b.s.u.span等行内元素.用样式去模拟bu ...
- web.xml中的<jsp-config>的用法详解
<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素. 其中<taglib>元素在JSP 1.2时就已 ...
- Linux 切换字符界面和图形界面
1. 切换方式 # root 权限 systemctl get-default # 获取当前模式 systemctl set-default graphical.target # 设置开机为图形界面 ...
- oracle处理重复数据
oracle查找重复记录 SELECT *FROM t_info aWHERE ((SELECT COUNT(*) FROM t_info WHERE Title ...
- Linux命令总结_文件操作之cut
1.cut命令 语法格式 cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file],有以下几个选项 -b :以字节为单位进行分割.这些字节位置将 ...