BZOJ 2818 Gcd(欧拉函数+质数筛选)
2818: Gcd
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 9108 Solved: 4066
[Submit][Status][Discuss]
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
Input
一个整数N
Output
如题
Sample Input
4
Sample Output
4
HINT
hint
对于样例(2,2),(2,4),(3,3),(4,2)
1<=N<=10^7
题解:gcd(x,y)=prime[i];
gcd(x/prime[i],y/prime[i])=1;
求每个数的欧拉值再用前缀和记录该数前所有互质对数sum[i];
枚举1~n/prime[i]有多少对互质对数然后将x,y互换的情况加起来即可(注:gcd(1,1)出现两次,所以要减1次)
#include<iostream>
#include<stdio.h>
#define ll long long
using namespace std;
const int maxn=1e7+7;
bool mark[maxn];
ll prime[maxn],phi[maxn],sum[maxn];
void eular(int n){//线性筛选求欧拉值
int cnt=0;
phi[1]=1;
for(int i=2;i<=n;i++){
if(!mark[i])
prime[cnt++]=i,phi[i]=i-1;
for(int j=0;j<cnt&&i*prime[j]<=n;j++){
mark[i*prime[j]]=1;
if(i%prime[j])//互质
phi[i*prime[j]]=phi[i]*phi[prime[j]];
else{//不互质
phi[i*prime[j]]=phi[i]*prime[j];//原因:该质数已存在则不用乘(1-1/prime[j]);
break;//防止重复增加时间
}
}
}
}
int main()
{
int n;
scanf("%d",&n);
eular(n);
ll ans=0;
for(int i=1;i<=n;i++)//i之前所有互质对数
sum[i]=sum[i-1]+phi[i];
for(int i=0;prime[i]&&prime[i]<=n;i++)//gcd(x/prime[i],y/prime[i])=1,x,y互换并减去(1,1)重复的情况
ans+=sum[n/prime[i]]*2-1;
printf("%lld\n",ans);
return 0;
}
BZOJ 2818 Gcd(欧拉函数+质数筛选)的更多相关文章
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- ACM学习历程—HYSBZ 2818 Gcd(欧拉函数 || 莫比乌斯反演)
Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sam ...
- 【BZOJ】2818: Gcd(欧拉函数+质数)
题目 传送门:QWQ 分析 仪仗队 呃,看到题后感觉很像上面的仪仗队. 仪仗队求的是$ gcd(a,b)=1 $ 本题求的是$ gcd(a,b)=m $ 其中m是质数 把 $ gcd(a,b)=1 $ ...
- Bzoj-2818 Gcd 欧拉函数
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x ...
- hdu 1695 GCD (欧拉函数+容斥原理)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)
P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...
- POJ 2773 Happy 2006【GCD/欧拉函数】
根据欧几里德算法,gcd(a,b)=gcd(a+b*t,b) 如果a和b互质,则a+b*t和b也互质,即与a互质的数对a取模具有周期性. 所以只要求出小于n且与n互质的元素即可. #include&l ...
- HDU 2588 GCD (欧拉函数)
GCD Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status De ...
- BZOJ2818: Gcd 欧拉函数求前缀和
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 如果两个数的x,y最大公约数是z,那么x/z,y/z一定是互质的 然后找到所有的素数,然后用欧拉函数求一 ...
随机推荐
- T5557 读写卡详解
T5557的基本信息就不在这里详细介绍,不了解的可以去看T5557的收据手册. 一上来直接开始讲操作 存在七种操作,我们重点介绍四种,Standard Write,Protected Write,Di ...
- spring源码学习2
spring总览 从入口看起 我们用spring时会用ClassPathXmlApplicationContext来加载spring配置文件,就从它开始吧. 1.双击shhift,输入ClassPat ...
- gitlab的配置
一. 管理员配置 gitlab 1. 登录 gitlab 等待 docker 容器启动完成后, 登陆 http://localhost:8080 第一次访问是让我们修改管理员密码.如下所示 初始化 g ...
- P4001 [ICPC-Beijing 2006]狼抓兔子
题目地址:P4001 [ICPC-Beijing 2006]狼抓兔子 平面图 边与边只在顶点相交的图. 对偶图 对于一个平面图,都有其对应的对偶图. 平面图被划分出的每一个区域当作对偶图的一个点: 平 ...
- Euclideanloss_layer层解析
这里说一下euclidean_loss_layer.cpp关于该欧式loss层的解析,代码如下: #include <vector> #include "caffe/layers ...
- LwIP Application Developers Manual6---Application API layers
1.前言 lwIP提供3种应用编程接口来跟TCP/IP内核通信,如下所示: 低水平的内核/回调或raw API 2个高水平序列API: 1) netconn API 2) socket API(为了兼 ...
- qemu中使用9p,支持host和guest中共享目录【转】
转自:https://blog.csdn.net/ayu_ag/article/details/52956351 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csd ...
- TreeGrid 控件集 :delphi 学习群 ---- 166637277 (Delphi学习交流与分享)
delphi 学习群: 166637277 (Delphi学习交流与分享). 群主QQ: 1936431438 TreeGrid 控件集 收集: 1.https://www.lmd.de/produ ...
- Windows PowerShell 入門(10)-デバッグ編
対象読者 Windows PowerShellでコマンドレット操作ができる方 何らかのプログラミング経験があればなお良い 必要環境 Windows PowerShell デバッグメッセージの出力 Po ...
- Git学习笔记04-管理修改
Git跟踪并管理的是修改,而非文件.新增文件,修改一行,删除一点,都算是修改. 在.git工作区新增一个文件,test.txt,输入test git ...然后git add add之后修改t ...