题目描述
神犇YY虐完数论后给傻×kAc出了一题
给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对
kAc这种傻×必然不会了,于是向你来请教……

输入格式:
第一行一个整数T 表述数据组数
接下来T行,每行两个正整数,表示N, M
输出格式:
T行,每行一个整数表示第i组数据的结果

说明
T = 10000
N, M <= 10000000

分析:题目就是求

Ans=∑p∈prime∑x=1N∑y=1M[gcd(x,y)=p]Ans=∑p∈prime∑x=1N∑y=1M[gcd(x,y)=p]

Ans = \sum_{p \in prime} \sum_{x=1}^{N} \sum_{y=1}^{M}[gcd(x,y)=p]
式子化简的很好的博客
最后可以化为

Ans=∑T=1min(N,M)⌊NT⌋∗⌊MT⌋∑p|T,p∈primeμ(TP)Ans=∑T=1min(N,M)⌊NT⌋∗⌊MT⌋∑p|T,p∈primeμ(TP)

Ans = \sum_{T=1}^{min(N,M)} \lfloor \frac{N}{T} \rfloor*\lfloor \frac{M}{T}\rfloor \sum_{p|T,p\in prime} \mu(\frac{T}{P})
后一个求和我们可以用o(n)求出前缀和,然后前面的可以整除分块求。最后时间复杂度 o(T∗N−−√)o(T∗N)o(T * \sqrt N)
建议自己在纸上多推几遍
CodeCodeCode

#include <map>
#include <set>
#include <queue>
#include <stack>
#include <list>
#include <string>
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
#define rep(i, l, r) for(int i = l; i < r; i++)
#define per(i, r, l) for(int i = r; i >= l; i--)#include <ext/rope>
using namespace __gnu_cxx;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int>pii;const int N = (int) 10000000 + 11;
const int M = (int) 1e6 + 11;
const int MOD = (int) 1e9 + 7;
const double EPS = (double) 1e-9;
const double PI = (double)acos(-1.0);
const int INF = (int) 0x3f3f3f3f;
const ll INFF = (ll) 0x3f3f3f3f3f3f3f3f;void read(int &x){char ch = getchar(); x = 0;while(ch < '0' || ch > '9') ch = getchar();while(ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
}
/*-----------------------------------------------------------------------------------*/ bool su[N] = {1, 1, 0};
int prm[N], mu[N], g[N], sz = 0;
int sum[N];
void init(int n){mu[1] = 1;for(int i = 2; i <= n; i++){if(!su[i]){prm[++sz] = i;mu[i] = -1;}for(int j = 1; j <= sz; j++){int t = i * prm[j];if(t > n) break;su[t] = 1;if(i % prm[j] == 0) {mu[t] = 0;break;}else {mu[t] = -mu[i];}}}rep(i, 1, sz + 1) for(int j = 1; j * 1ll * prm[i] <= n; j++) g[j * prm[i]] += mu[j];        sum[0] = 0;rep(i, 1, n + 1) sum[i] = sum[i - 1] + g[i];
}
int main(){#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);#endifinit(10000000);int T;scanf("%d", &T);while(T--){int n, m; scanf("%d%d", &n, &m);  //一开始多开了几个long long的变量居然T了几组,Emmmmmll ans = 0;int c = min(n, m); for(int l = 1, r; l <= c; l = r + 1){r = min(n / (n / l), m / (m / l));ans += (n / l) * 1ll * (m / l) * (sum[r] - sum[l - 1]); }printf("%lld\n", ans);}   return 0;
}

【洛谷 P2257】YY的GCD 【莫比乌斯反演 经典题目】相关推荐

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

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

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

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

  3. 洛谷P2257 YY的GCD

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

  4. 洛谷 P2257 YY的GCD

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

  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. 【bzoj2820】YY的GCD 莫比乌斯反演

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

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

    题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...

  9. bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛

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

最新文章

  1. java程序设计案例教程 钱银中_《Java程序设计案例教程》【价格 目录 书评 正版】_中国图书网...
  2. oracle 12c创建可插拔数据库(PDB)与用户详解
  3. subsonic mysql_Subsonic 介绍
  4. Matlab常用函数流水账
  5. 【NLP】N-LTP:基于预训练模型的中文自然语言处理平台
  6. liferay在sturs2中传参数
  7. 拓扑排序排课系统_视频结构化人脸布控系统
  8. MyEclipse安装包
  9. UOS U盘复制性能,3M
  10. atitit.客户端连接oracle数据库的方式总结
  11. angular自带的一些api_在Angular软件中执行API请求的正确方式,了解一下
  12. CenterOs升级gcc
  13. 淘宝带你走进——幽灵Crash迷踪案
  14. IntelliJ IDEA中文汉化教程
  15. python画简便的图片-用python简单处理图片(5):图像直方图
  16. Dear小弟×××,给你们的一封信「社区运营入门系列 序」
  17. OpenGL配置glut64位和glut32位,英伟达 安全 下载地址 免费
  18. python闲鱼二手爬虫_Python 爬虫咸鱼版
  19. 数据结构之字符串插入操作
  20. 红帽 Red Hat Linux相关产品iso镜像下载【百度云】【更新7.6】

热门文章

  1. 仿新版QQ锁屏下弹窗
  2. matplotlib同时画柱状图和折线图
  3. python可以数独游戏吗_如何用Python创建数独游戏
  4. 自由动力3.6版90个问答(四)
  5. java如何写一个简单的定时任务?
  6. 成功的云桌面解决方案应该是这样的
  7. TLA+ 术语解释及中文翻译
  8. 140斤减脂到90斤需要多久?
  9. python客户端通过代理发送请求
  10. python中间件有哪些_python 中间件