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的更多相关文章

  1. bzoj 2818 GCD 数论 欧拉函数

    bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Samp ...

  2. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  3. BZOJ 2818: Gcd

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4443  Solved: 1960[Submit][Status][Discuss ...

  4. bzoj 2818: Gcd GCD(a,b) = 素数

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1566  Solved: 691[Submit][Status] Descript ...

  5. bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路一] 定义f[i]表示i之 ...

  6. bzoj 2818: Gcd 歐拉函數

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1633  Solved: 724[Submit][Status] Descript ...

  7. Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3241  Solved: 1437[Submit][Status][Discuss ...

  8. BZOJ 2818 Gcd(欧拉函数+质数筛选)

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 9108  Solved: 4066 [Submit][Status][Discu ...

  9. BZOJ 2818 GCD 素数筛+欧拉函数+前缀和

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...

随机推荐

  1. WCF入门(10)

    前言 又堕落了,哎. 公司是做乙方的,工资还凑合,主要是项目基本都已完成,进去就是干维护,体会不到那种从头彻尾的成就感.项目中具体用了EF+Ado.net+WCF+WPF+(VB.net啊,坑啊,完全 ...

  2. asp.net mvc 中的部分视图

    使用方法:@Html.Action(action, controller)加载局部页面.例如在模板页中使用:@Html.Action("Contact", "Compan ...

  3. 每天一个linux命令(50):telnet命令

    telnet 命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是 Internet远程登陆服务的标准协议和主要方式.它为 ...

  4. javascript 重难点(原型链 this) 理解总有一个过程,不要急,循序渐进!

    开始补充: 1. 将函数定义作为对象的属性,称之为对象方法.2. this的指向是由它所在函数调用的上下文决定的(语境),而不是由它所在函数定义的上下文决定的.3. 因为当一个函数作为函数而不是方法来 ...

  5. Oracle中新增表代码

    create table userinfo ( id varchar2(36) primary key, username varchar2(50) not null, password varcha ...

  6. ELK 部署

    文章转载: http://www.open-open.com/doc/view/df156a76a824402482d1d72cd3b61e38 http://www.open-open.com/li ...

  7. iOS开发中的错误整理,关于用绑定Tag取控件的注意事项,有时候不绑定也是个错!

    如图:红色框中是个自定义的导航工具条titlesView(没有绑定Tag),工具条中有五个按钮(按钮绑定了Tag)以及一个红色的指示器indicatorView(没有绑定Tag),下面的蓝色是可以滚动 ...

  8. Java-集合类汇总

    结构图: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakH ...

  9. Oracle同义词创建及分配用户创建同义词权限

    (1)--授权某个用户crate synonym的权限,若用户名为scott grant create synonym to scott(2)--创建同义词 create [or replace] s ...

  10. sql prompt5安装好了 也破解完成了 然后到SQL里面 还是没有提示 是为什么?

    勾上这个,祝你成功!