【LG2257】YY的GCD
【LG2257】YY的GCD
题面
题解
题目大意:
给定\(n,m\)求\(\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)为质数]\)。
我们设\(f(x)=[x为质数]\),需要找到一个\(g\)使得\(f=1*g\),那么\(g=\mu*f\)
\]
这样的话,我们要求的就是
=\sum_{d=1}^{min(n,m)}g(d)\sum_{i=1}^{n}\sum_{j=1}^{m}[d|i][d|j]\\
=\sum_{d=1}^{min(n,m)}g(d)\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor
\]
可以用数论分块求出
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
inline int gi() {
	register int data = 0, w = 1;
	register char ch = 0;
	while (!isdigit(ch) && ch != '-') ch = getchar();
	if (ch == '-') w = -1, ch = getchar();
	while (isdigit(ch)) data = 10 * data + ch - '0', ch = getchar();
	return w * data;
}
typedef long long ll;
const int MAX_N = 1e7 + 5;
const int MAX = 1e7;
bool is_prime[MAX_N];
int prime[MAX_N], num, mu[MAX_N], s[MAX_N], f[MAX_N];
void sieve() {
	for (int i = 1; i <= MAX; i++) is_prime[i] = 1;
	is_prime[1] = 0, mu[1] = 1;
	for (int i = 2; i <= MAX; i++) {
		if (is_prime[i]) prime[++num] = i, mu[i] = -1;
		for (int j = 1; j <= num && i * prime[j] <= MAX; j++) {
			is_prime[i * prime[j]] = 0;
			if (i % prime[j] == 0) break;
			mu[i * prime[j]] = -mu[i];
		}
	}
	for (int i = 1; i <= num; i++)
		for (int j = 1; prime[i] * j <= MAX; j++)
			f[j * prime[i]] += mu[j];
	for (int i = 1; i <= MAX; i++) s[i] = s[i - 1] + f[i];
}
ll solve(int a, int b) {
	ll ans = 0;
	if (a > b) swap(a, b);
	for (int l = 1, r = 0; l <= a; l = r + 1) {
		r = min(a / (a / l), b / (b / l));
		ans += 1ll * (s[r] - s[l - 1]) * (a / l) * (b / l);
	}
	return ans;
}
int main () {
#ifndef ONLINE_JUDGE
	freopen("cpp.in", "r", stdin);
#endif
	sieve();
	int T = gi(), N, M;
	while (T--) {
		N = gi(), M = gi();
		printf("%lld\n", solve(N, M));
	}
	return 0;
}
												
											【LG2257】YY的GCD的更多相关文章
- BZOJ2820/LG2257 YY的GCD  莫比乌斯反演
		
问题描述 BZOJ2820 LG2257 题解 求 \(\sum\limits_{i=1}^{n}{\sum\limits_{j=1}^{m}{[gcd(i,j)==p]}}\) ,其中 \(p\)为 ...
 - BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】
		
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1624 Solved: 853[Submit][Status][Discu ...
 - [BZOJ2820]YY的GCD
		
[BZOJ2820]YY的GCD 试题描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少 ...
 - bzoj 2820 YY的GCD 莫比乌斯反演
		
题目大意: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性 ...
 - 【BZOJ】【2820】YY的GCD
		
莫比乌斯反演 PoPoQQQ讲义第二题. 暴力枚举每个质数,然后去更新它的倍数即可,那个g[x]看不懂就算了…… 为什么去掉了一个memset就不T了→_→…… /****************** ...
 - 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)
		
首先我们来看一道题 BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...
 - 【BZOJ 2820】 YY的GCD (莫比乌斯+分块)
		
YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少 ...
 - 【BZOJ2820】YY的GCD(莫比乌斯反演)
		
[BZOJ2820]YY的GCD(莫比乌斯反演) 题面 讨厌权限题!!!提供洛谷题面 题解 单次询问\(O(n)\)是做过的一模一样的题目 但是现在很显然不行了, 于是继续推 \[ans=\sum_{ ...
 - YY的GCD
		
YY的GCD 给出T个询问,询问\(\sum_{i=1}^N\sum_{j=1}^M(gcd(i,j)\in prime)\),T = 10000,N, M <= 10000000. 解 显然质 ...
 
随机推荐
- 6、Dubbo-配置(1)
			
覆盖关系 下图展示了配置覆盖关系的优先级,从上到下优先级依次降低: 参考官网:http://dubbo.apache.org/zh-cn/docs/user/configuration/configu ...
 - Spring(三)之Ioc、Bean、Scope讲解
			
Spring容器是Spring Framework的核心.容器将创建对象,将它们连接在一起,配置它们,并管理从创建到销毁的整个生命周期.Spring容器使用DI来管理组成应用程序的组件.这些对象称为S ...
 - ThinkPHP5入门(三)----模型篇
			
一.操作数据库 1.数据库连接配置 数据库默认的相关配置在项目的application\database.php中已经定义好. 只需要在模块的数据库配置文件中配置好当前模块需要连接的数据库的配置参数即 ...
 - UVALive - 2515 (最小生成树 kruskal)
			
You are assigned to design network connections between certain points in a wide area. You are given ...
 - Jfinal框架登陆页面的图形验证码
			
本文转自,http://www.bubuko.com/infodetail-720511.html 验证码的工具类, 这个jfinal自带的也有,但是下面这个和Jfinal自带的有一点点小的改动,(我 ...
 - dataFrame 切片操作
			
loc——通过行标签索引行数据 # iloc——通过行号索引行数据 # ix——通过行标签或者行号索引行数据(基于loc和iloc 和at 和iat 的混合) # 同理,索引列数据也是如此! # : ...
 - 使用  JLINK  的  RTT   功能 进行  调试打印数据
			
jlink V9 时,在 SWD 接口 模式 时 ,要 接 SWO 这个引脚 ,否则导致 在 FreeRTOS的任务中不能使用, 正确的 接线方法 是 VCC,GND,SWDIO,SWCLK,S ...
 - zookeeper启动时报错:Error contacting service. It is probably not running问题
			
查看zookeeper.out发现启动日志报错未找到java路径. 启动日志位于zookeeper-4.0.10/bin目录下 修改/etc/profile中环境变量得以解决.
 - Vcenter虚拟化三部曲----Vcenter server 5.5安装部署
			
配置SQL Server 2008 R2 1.选择启动 SQL Server Management Studio. 2.选择SQL Server 身份验证登录 ---- 输入sa用户及密码. 3.右键 ...
 - 控制台打印九九乘法表(for循环的使用)
			
控制台输出九九乘法表 for(int i=1;i<=9;i++){ for(int j = 1; j <= i; j ++) { System.out.print(j+"*&qu ...