BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2818
2818: Gcd
Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 9236  Solved: 4126
[Submit][Status][Discuss]
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
Input
一个整数N
Output
如题
Sample Input
Sample Output
HINT
对于样例(2,2),(2,4),(3,3),(4,2)
1<=N<=10^7
解题思路:
老套路:GCD( x, y ) = p 转换成 GCD( x/p, y/p ) = 1;
那么按照原来的配方,我们需要枚举 x/p 或者 y/p 其中一个数,然后另外一个数的总数通过欧拉函数求得。
假设选择枚举 y/p ,那么还需要暴力一遍枚举素数。(一开始就是直接暴力。。。)
然而O( n ) 内可以同时筛出素数和欧拉函数值:https://oi.abcdabcd987.com/sieve-prime-in-linear-time/
同时记录一下欧拉函数前缀和 sum[k] ,根据上面的转换我们可知:
如果给出 x <= y ,则直接枚举素数枚举y,然后欧拉函数求所有方案数即可;
但是这里没有明确表明 x 和 y 的大小关系, 但是我们还是只求一半 即 (默认 x <= y)的情况,然后这个答案乘以 2 就是 (y <= x)的情况了,需要去一下重(即 x = y = 1)的情况。
枚举 素数 p ,求 [ 1, N/p ] 中互质的数对的总数, 即 2*sum[ N/p ] - 1;
AC code:
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const int MAXN = 1e7+;
bool com[MAXN];
int primes, prime[MAXN], phi[MAXN];
LL sum[MAXN]; void get_phi(int n){
phi[] = ;
for (int i = ; i <= n; ++i)
{
if (!com[i])
{
prime[primes++] = i;
phi[i] = i-;
}
for (int j = ; j < primes && i*prime[j] <= n; ++j)
{
com[i*prime[j]] = true;
if (i % prime[j])
phi[i*prime[j]] = phi[i]*(prime[j]-);
else
{ phi[i*prime[j]] = phi[i]*prime[j]; break; }
}
//sum[i] = sum[i-1]+phi[i];
}
}
int main()
{
int N;
scanf("%d", &N);
get_phi(N);
sum[] = ;
for(int i = ; i <= N/; i++){
sum[i] = sum[i-]+phi[i];
// phi[i] = phi[i-1]+phi[i];
}
// printf("%d\n", phi[1]);
LL ans = ;
for(int i = ; i < primes; i++){
ans = ans + (sum[N/prime[i]]*-);
}
printf("%lld\n", ans); return ;
}
BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】的更多相关文章
- ACM学习历程—HYSBZ 2818 Gcd(欧拉函数 || 莫比乌斯反演)
		
Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sam ...
 - 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)
		
P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...
 - BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
		
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
 - BZOJ 2818 Gcd(欧拉函数+质数筛选)
		
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 9108 Solved: 4066 [Submit][Status][Discu ...
 - UVA11426 GCD - Extreme (II) (欧拉函数/莫比乌斯反演)
		
UVA11426 GCD - Extreme (II) 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 10 100 200000 0 输出样例#1: 67 13 ...
 - 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】
		
用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...
 - 中国剩余定理 & 欧拉函数 & 莫比乌斯反演 & 狄利克雷卷积 & 杜教筛
		
ssplaysecond的博客(请使用VPN访问): 中国剩余定理: https://ssplaysecond.blogspot.jp/2017/04/blog-post_6.html 欧拉函数: h ...
 - bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
		
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路一] 定义f[i]表示i之 ...
 - hdu6390 /// 欧拉函数+莫比乌斯反演 筛inv[] phi[] mu[]
		
题目大意: 给定m n p 求下式 题解:https://blog.csdn.net/codeswarrior/article/details/81700226 莫比乌斯讲解:https://ww ...
 
随机推荐
- PostgreSQL On Windows Process Connection Performance
			
本文主要对PostgreSql在Windows下的连接测试. 测试环境: Win7 x64, PostgreSql 10.1 x64 测试语言: VS2015 C# 因为Pg的数据库连接是开启进程来处 ...
 - .NET 中使用阿里云短信的 API 接口
			
小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信 ...
 - java利用直方图实现图片对比
			
需求 实现两张图对比,找出其中不同的部分. 分析 首先将大图切片,分成许多小图片.然后进行逐个对比,并设定相似度阈值,判断是否是相同.最后整理,根据生成数组标记不同部分.如果切片足够小,便越能精确找出 ...
 - 模仿jquery的data
			
jquery中,有这个方法 var obj = {}; $.data(obj,'name','jake'); console.info($.data(obj,'name')); console.inf ...
 - flask跨域
			
from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) CORS(app) @a ...
 - apply()方法和call()方法
			
obj.func.call(obj1) //是将obj1看做obj,调用func方法,将第一个参数看做函数调用的对象,可以看做,将obj的方法给obj1使用 ECMAScript规范给所有 ...
 - Python基础-小程序练习(跳出多层循环,购物车,多级菜单,用户登录)
			
一. 从第3层循环直接跳出所有循环 break_flag = False count = 0 while break_flag == False: print("-第一层") wh ...
 - Python语言下图像的操作方法总结
			
本章主要讲解 图像的读取方式.灰度化操作.图像转化为矩阵的方法 假设 strImgPath是图像的路径, img对象将图片读入到内存中 读取图像的第一种方式:skImage from skimage ...
 - Fiddler给网站“优化”
			
最近访问某知名网站的速度非常慢,有时候需要2分钟还没完全打开,页面展示了一半就卡住,然后等半天才继续显示下面部分.这种情况已经有几个月了,不知道是他们服务器原因还是我所在网络的问题,但是基本上在其他网 ...
 - 根据viewport的size自动调整fontsize大小
			
现在的网站必须要考虑mobile上访问的友好性,bootstrap作为mobile first的前端框架得到很多应用,它通过默认就使用.col-xs-xx定义的width,同时加上@media(min ...