BZOJ 2818——Gcd
题意:给定n,求gcd(x,y)==p 的对数,其中(1<=x<y<n)
思路:
求(x, y) = k, 1 <= x, y <= n
的对数等于求(x, y) = 1, 1 <= x, y <= n/k
的对数!所以,枚举每个质数p
(线性筛素数的方法见:线性时间内筛素数和欧拉函数),然后求(x, y) = 1, 1 <= x, y <= n/p
的个数。
那(x, y) = 1
的个数如何求呢?其实就是求互质的数的个数。在[1, y]
和y
互质的数有phi(y)
个,如果我们令x < y
,那么答案就是sigma(phi(y))
。因为x, y
是等价的,所以答案*2,又因为(1, 1)
只有一对,所以-1。最终答案为sigma(sigma(phi(n/prime[i])) * 2 - 1)
。
参考:https://oi.abcdabcd987.com/eight-gcd-problems/
code:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <cmath>
#include <vector>
using namespace std;
using namespace std;
typedef long long ll;
const int N = 10000005;
const ll maxn=1e18+100;
int n,len;
int p[N],phi[N];
bool vis[N];int main()
{scanf("%d",&n);len=0;for (int i=2;i<=n;i++){if (!vis[i]){p[len++]=i;phi[i]=i-1;}for (int j=0;j<len&&i*p[j]<=n;j++){vis[i*p[j]]=1;if (i%p[j]) phi[i*p[j]]=phi[i]*(p[j]-1);else{phi[i*p[j]] = phi[i] * p[j];break; }}}phi[1]=1;for (int i=2;i<=n;i++) phi[i]+=phi[i-1];ll ans=0;for (int i=0;i<len;i++) ans+=phi[n/p[i]]*2-1;printf("%lld",ans);
}
BZOJ 2818——Gcd相关推荐
- 欧拉筛(bzoj 2818: Gcd)
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 6707 Solved: 2952 [Submit][Status][Discu ...
- BZOJ 2818: Gcd 筛法
2818: Gcd 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2818 Description 给定整数N,求1<=x,y< ...
- BZOJ 2818: Gcd区间内最大公约数 为素数的对数(欧拉函数的应用)
传送门 2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 3649 Solved: 1605 [Submit][Status][Dis ...
- BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)
标题效果:定整N(N <= 1e7),乞讨1<=x,y<=N和Gcd(x,y)素数的数(x,y)有多少.. 思考:推,. 建立gcd(x,y) = p,然后,x / p与y / p互 ...
- BZOJ 2818 Gcd
传送门 题解:设p为素数 ,则gcd(x/p,y/p)=1也就是说求 x/p以及 y/p的欧拉函数.欧拉筛+前缀和就可以解决 #include <iostream> #include &l ...
- HYSBZ - 2818 Gcd —— 莫比乌斯反演
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 8172 Solved: 3609 Description 给定整数N,求1&l ...
- HYSBZ 2818 Gcd
Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sa ...
- bzoj 2818 欧拉函数
思路:就是对于某个数q,跟他互质的数p,kp和kq的最大公约数是k,那么这个数能组成的答案的数量就是phi[i]乘以某个质数,且乘积小于n 基于这种思路写下这个代码 #include <cstd ...
- 最大公约数gcd函数简介
gcd函数简介 最大公因数(英语:highest common factor,hcf)也称最大公约数(英语:greatest common divisor,gcd)是数学词汇,指能够整除多个整数的最大 ...
最新文章
- R 语言 download.file 的几点知识
- 【推导】【线段树】hdu5929 Basic Data Structure
- 彻底解决Webpack打包慢的问题
- 零基础学编程学java还是python-零基础学编程,Java和Python你pick谁?
- 深度学习模型之各种caffe版本(Linux和windows)的网址
- NIPS 2018 论文解读集锦(11月28日更新)
- boost::synchronized_value相关的测试程序
- 找call的万能方法,一招通杀所有网络游戏【个人实践出来的】
- 特斯拉副总裁陶琳:Model Y 本月开始陆续交付
- TensorFlow tf.keras.losses.SparseCategoricalCrossentropy
- 在Windows 7中搭建Wordpress环境
- Android studio: 自 maven 增加一個函式庫
- Font Awesome入门教程
- 软件开发的流程和常用模式
- android screenshot流程,APP中,Screenshot的设计要领和各发布渠道的要求
- mpls工作原理通俗解释_MPLS的工作原理
- U3D DotH教程3
- 全球及中国DIN 2353压缩配件行业研究及十四五规划分析报告
- windows7 中pkeyconfig.xrm-ms文件无法删除解决办法
- 电脑网络重置后如何连接网络
热门文章
- Vue解析--如何应对面试官提问
- 学习关于display :flex 布局问题!
- 反射例子(配置文件)
- BZOJ1734: [Usaco2005 Feb]Aggressive cows 愤怒的牛
- class threading.Thread()说明:
- -bash: belts.awk: command not found
- 转:只能选择GridView中的一个CheckBox(单选CheckBox)
- 一款jQuery立体感动态下拉导航菜单特效
- Java 队列清空,如何清空Actor死信队列 - java
- 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...