正题

P2257


题目大意

给你T组询问,每组询问给出n,m,让你求 1≤x≤n,1≤y≤m1\leq x\leq n,1\leq y\leq m1≤x≤n,1≤y≤m 且 gcd(x,y)=primegcd(x,y)=primegcd(x,y)=prime 的方案数


解题思路

根据题意,有

∑i=1n∑j=1m[gcd(i,j)=prime]\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=prime] i=1∑n​j=1∑m​[gcd(i,j)=prime]

考虑把prime拿出来枚举

∑p∈primen∑i=1n/p∑j=1m/p[gcd(i,j)=1]∑p∈primen∑i=1n/p∑j=1m/p∑d∣i,d∣jμ(d)∑p∈primemin(n,m)∑d=1min(n,m)/pμ(d)×⌊ndp⌋×⌊mdp⌋\sum_{p\in prime}^n\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}[gcd(i,j)=1]\\ \sum_{p\in prime}^n\sum_{i=1}^{n/p}\sum_{j=1}^{m/p}\sum_{d|i,d|j}\mu(d)\\ \sum_{p\in prime}^{min(n,m)}\sum_{d=1}^{min(n,m)/p}\mu(d)\times\left\lfloor\frac{n}{dp}\right\rfloor\times\left\lfloor\frac{m}{dp}\right\rfloor\\ p∈prime∑n​i=1∑n/p​j=1∑m/p​[gcd(i,j)=1]p∈prime∑n​i=1∑n/p​j=1∑m/p​d∣i,d∣j∑​μ(d)p∈prime∑min(n,m)​d=1∑min(n,m)/p​μ(d)×⌊dpn​⌋×⌊dpm​⌋

然后可以考虑改变枚举变量

可以发现后面的两个整除都与dp有关,那么考虑枚举dp,那么有

∑k=1min(n,m)∑p∈prime,p∣kμ(kp)×⌊nk⌋×⌊mk⌋∑k=1min(n,m)⌊nk⌋⌊mk⌋∑p∈prime,p∣kμ(kp)\sum_{k=1}^{min(n,m)}\sum_{p\in prime,p|k}\mu(\frac{k}{p})\times\left\lfloor\frac{n}{k}\right\rfloor\times\left\lfloor\frac{m}{k}\right\rfloor\\ \sum_{k=1}^{min(n,m)}\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor\sum_{p\in prime,p|k}\mu(\frac{k}{p})\\ k=1∑min(n,m)​p∈prime,p∣k∑​μ(pk​)×⌊kn​⌋×⌊km​⌋k=1∑min(n,m)​⌊kn​⌋⌊km​⌋p∈prime,p∣k∑​μ(pk​)

对于后面的∑p∈prime,p∣kμ(kp)\sum_{p\in prime,p|k}\mu(\frac{k}{p})∑p∈prime,p∣k​μ(pk​),可以预处理,先枚举质数,然后枚举倍数,然后计算贡献

对于前面的一段再整除分块就好了

时间复杂度 O(Tn)O(T\sqrt{n})O(Tn​)


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 10000010
using namespace std;
ll T,n,m,ans,w,p[N],g[N],mu[N],prime[N];
const ll MX=1e7;
void work()
{p[1]=mu[1]=1;for(ll i=2;i<=MX;++i){if(!p[i]){mu[i]=-1;prime[++w]=i;}for(ll j=1;j<=w&&i*prime[j]<=MX;++j){p[i*prime[j]]=1;if(i%prime[j]==0)break;else mu[i*prime[j]]=-mu[i];}}for(ll i=1;i<=w;++i)for(ll j=1;j*prime[i]<=MX;++j)g[j*prime[i]]+=mu[j];//对每个数提出一个质因数计算mu的贡献for(ll i=2;i<=MX;++i)g[i]+=g[i-1];return;
}
int main()
{scanf("%lld",&T);work();while(T--){scanf("%lld%lld",&n,&m);ans=0;for(ll l=1,r=0;l<=min(n,m);l=r+1){r=min(n/(n/l),m/(m/l));ans+=(n/l)*(m/l)*(g[r]-g[l-1]);}printf("%lld\n",ans);}return 0;
}

【数论】YY的GCD(P2257)相关推荐

  1. P2257 YY的GCD

    P2257 YY的GCD 题意: 求 1≤x≤N,1≤y≤M1 \leq x \leq N,1 \leq y \leq M1≤x≤N,1≤y≤M 且gcd(x, y) 为质数的 (x,y) 有多少对. ...

  2. 洛谷 P2257 YY的GCD

    YY的GCD 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定\(N\), \(M\) ,求\(1 \le x \le N,1 \le y \le M\)且\(gcd(x, y)\)为质数的\( ...

  3. [洛谷P2257] YY的GCD (莫比乌斯反演)

    YY的GCD 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻× ...

  4. 洛谷P2257 YY的GCD 莫比乌斯函数反演+线性筛

    洛谷P2257 YY的GCD 标签 莫比乌斯反演 线性筛 前言 这题貌似和莫反没多大关系,就是用到了一个莫比乌斯函数的性质了,其他就是推公式,优化和式. 我的第一道懵逼反演-真的好难好难-而且套路特别 ...

  5. [Luogu P2257] YY的GCD (莫比乌斯函数)

    题面 传送门:洛咕 Solution 推到自闭,我好菜啊 显然,这题让我们求: \(\large \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)\in prime]\) 根 ...

  6. BZOJ 2820 YY的GCD 莫比乌斯反演

    2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...

  7. BZOJ 2820: YY的GCD

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1705  Solved: 908 [Submit][Status][Dis ...

  8. bzoj 2820: YY的GCD(莫比乌斯反演)

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2111  Solved: 1137 [Submit][Status][Di ...

  9. [ bzoj2820] YY的GCD

    [ bzoj2820] YY的GCD Time Limit : 3000 ms Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<= ...

  10. 【BZOJ 2820】 YY的GCD

    2820: YY的GCD Time Limit: 10 Sec   Memory Limit: 512 MB Submit: 807   Solved: 404 [ Submit][ Status] ...

最新文章

  1. 一文搞定cookie,session,token
  2. 可搜索本机文档内容软件:anytext(批量检索文档内容)(不是很好用,推荐用filelocator)
  3. QString之arg用法
  4. docker安装Zabbix
  5. Anaconda 下libsvm的安装
  6. go语言的rune类型
  7. 关于Adapter模式
  8. 生信技能树课程记录笔记(六)20220530
  9. 深度解读 AlphaGo 算法原理
  10. [生存志] 第91节 鬼谷捭阖之策
  11. matlab导入数据画二维云图,matlab中用xyz三组数据画出2维云图
  12. 在 Word 中如何画底线、直线、虚线?
  13. 算法核心-动态规划算法
  14. 资料:成为全栈dApp开发者的学习计划
  15. react 调用子(孙)组件方法
  16. 《高效的项目和团队》
  17. SQLite--SQLite的基本介绍和安装
  18. Java前端框架ZK的分页组件
  19. Android 设置应用的底部导航栏(虚拟按键)背景颜色
  20. DAC7512驱动原理

热门文章

  1. php按时间分组的sql语句,(SQL语句)按指定时间段分组统计
  2. php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程
  3. python 正则匹配 条件太多怎么办_Python条件正则表达式
  4. 墨迹天气语音包_小米有品“智能AI翻译机”评测,还内置了语音助手,随身WiFi功能...
  5. 橡皮擦_日本推出改邪归正橡皮擦,看得我头顶一凉
  6. java中的线程不安全和实例解析
  7. 买卖股票类问题动态规划解法(Leetcode题解-Python语言)
  8. matlab求logistics映射 的le_高维映射 与 核方法(Kernel Methods)
  9. 数据结构---简单插入排序
  10. 操作系统——缓冲区溢出