BZOJ 2818
2818:GCD
Description
给定整数$N$,求$1\le x,y\le N$且$\gcd{x,y}$为素数的数对$(x,y)$有多少对.
Input
$N$
Output
RT
Sample
Input
----------------
4 Output
----------------
4
Hint
4个解为$(2,2)$,$(3,3)$,$(2,4)$,$(4,2)$
$1\le N\le 10^7$
Source
这道题目很有意思.
我们将一个数$A$质因数分解:$A=p_1^{m_1}p_2^{m_2}\dots p_n^{m_n}$其中$p_i$是连续素数,记为$FS(A)=\left[m_1,m_2\dots\right]$.对于每一个数来说他们的分解都是唯一的(算术基本定理).
我们将$FS(A)=a$的反函数记为$SF(a)=A$.
那么$\gcd{A,B}=SF([(\min{FS(A)[0],FS(B)[0]}),\dots])$.
那么,易证$\gcd{\frac{A}{m},\frac{B}{m}}=\frac{\gcd{a,b}}{m}$.
因此,我们可以将原问题稍稍转化下,我们可以求$1\le x,y\le \lfloor\frac{N}{p}\rfloor$(其中$p$是一个素数)时$\gcd{x,y}=1$的组数.注意到这个问题中$x,y$互质,那么我们从下到大枚举$y$,算出$\phi(y)$的和相加.由于考虑顺序,组数要乘以$2$,由于$(1,1)$正反是一样的,那么再减去$1$.
如何求$\phi(y)$呢?我们可以用线性筛法稍微改动一下.具体的看我程序.
剩下的也不难想到了.我们前缀和了$\phi(y)$,那么对于每个素数的计算就变成$O(1)$了.
#include <cstdio>
int N,i,j,k,phi[10000001],primes[700000],pr;
long long phipref[10000001],res;
int np[10000001];
void genPhi(int n){
phipref[1]=phi[1]=1;
for(i=2;i<=n;++i){
if(!np[i]){
phi[i]=i-1;
np[i]=primes[pr++]=i;
}
for(j=0;j<pr && (k=primes[j]*i)<=n;++j){
np[k]=primes[j];
if(np[i]==primes[j]){
phi[k]=phi[i]*primes[j];
break;
}else{
phi[k]=phi[i]*(primes[j]-1);
}
}
phipref[i]=phipref[i-1]+phi[i];
}
}
int main(){
scanf("%d",&N);
genPhi(N);
for(i=0;i<pr;++i) res+=phipref[N/primes[i]]*2-1;
printf("%lld\n",res);
return 0;
}
* 类似题目:BZOJ 2190 < 这道题我不清楚原做法是怎么样的0.0,数据范围开小了太多.
BZOJ 2818的更多相关文章
- bzoj 2818 GCD 数论 欧拉函数
bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Samp ...
- 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 MBSubmit: 4443 Solved: 1960[Submit][Status][Discuss ...
- bzoj 2818: Gcd GCD(a,b) = 素数
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1566 Solved: 691[Submit][Status] Descript ...
- bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路一] 定义f[i]表示i之 ...
- bzoj 2818: Gcd 歐拉函數
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1633 Solved: 724[Submit][Status] Descript ...
- Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3241 Solved: 1437[Submit][Status][Discuss ...
- BZOJ 2818 Gcd(欧拉函数+质数筛选)
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 9108 Solved: 4066 [Submit][Status][Discu ...
- BZOJ 2818 GCD 素数筛+欧拉函数+前缀和
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...
随机推荐
- 【前端开发系列】—— CSS3属性选择器总结
想想自己为什么要学CSS,作为一个开发过前端的人员来说,调试一个图片花了半天的时间,最后发现分隔符用错了,实在是一件很丢人的事情.因此,痛下决心来学习CSS,最近一周也会更新下相关的学习笔记. CSS ...
- websocket在.net4.5中实现的简单demo
以下代码环境要求:win8或win10, .net4.5+IIS8 win7上是IIS7,win7上.net本身不直接支持websocket, win7可以用superwebsocket, 或自己根据 ...
- myeclipse自动import
不管包什么的 直接把代码全写出来 再按 ctrl + shift +o 这是自动导包的 前提是你写的代码是正确的
- WebService 入门程序(一)
第一步:定义webService接口 package com.robert.ws.service; import javax.jws.WebService; @WebService public in ...
- Maven 教程
Maven 教程 序:几次对Maven 的学习,都因为各种原因 而中途切断了,再一次学习的时候,又不得不重新开始,结果发现 又不记得步骤 又找不到对应的文档.别人写的再好,终究比不过自己亲手实践的得出 ...
- Spring-事物传播行为
spring事物的传播属性(7种) REQUIRED(默认) 业务方法需要在一个容器里运行.如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务. 存在事物,则使用当前事物 ...
- 13. (转) Android一些布局属性详解
RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:l ...
- 【心得&&体会】
★2016.1.1★ 很早就想写这样的一篇blog了,但一直没有抽空去实现,新的一年感觉应该有所改变,故深夜提笔(码字) NOIP卡掉和连续两次月考爆炸,这段时间确实心理不舒服,调节的也不是很到位,但 ...
- FOJProblem 2214 Knapsack problem(01背包+变性思维)
http://acm.fzu.edu.cn/problem.php?pid=2214 Accept: 4 Submit: 6Time Limit: 3000 mSec Memory Lim ...
- Nagios配置和命令介绍(二 )
Nagios配置 Nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源及对外的服务等.默认的Nagios 配置没有任何监控内容,仅是一些模板文件.若要让Nagios 提供服务, ...