GCD

题面:

  给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.

思路:

  首先两个数gcd(x,y)=p为质数,那么令x=k1*p,y=k2*p,由于是最大公因数,所以有k1k2互质,那么根据每一个p我们可以构造出一些不同的k1k2(k1,k2<=n/p),于是求k1,k2可行组合就变成了求 1~n/p范围之内的互质组数。我们运用欧拉筛同时解决找p和互质组数的问题。

  首先解决互质组数的问题。我们设f[i]为1~i中的互质二元组个数。则有递推式:

  f[i]=f[i-1]+2*φ(i)

  因为1~i-1我们已经计算过了,所以考虑当前的i与1~i之间组成的互质二元组个数。很显然的,个数为φ(i).欧拉筛求解。由于二元组无序,所以*2

  在欧拉筛的时候,可以同时求出质数p和φ(i).所以求出答案。

  注意在欧拉筛是从2开始,所以初始化f[1]=1;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<fstream>
using namespace std;
#define ll long long
ll phi[],prm[],n,cnt,f[];
bool vis[];
inline void findphi(){
phi[]=,prm[]=;
for (ll i=;i<=n;++i)
{
if (!vis[i]) { prm[++cnt]=i, phi[i]=i-; }
for (ll j=;j<=cnt && i*prm[j]<=n;++j)
{
vis[i*prm[j]]=;
if (i%prm[j]==) { phi[i*prm[j]]=phi[i]*prm[j]; break; }
if (i%prm[j]!=) phi[i*prm[j]]=phi[i]*(prm[j]-);
}
f[i]=f[i-]+*phi[i];
}
return;
}
int main(){
cin>>n;
cnt=;
f[]=;
findphi();
ll ans=;
for(int i=;i<=cnt;++i){
ans+=f[n/prm[i]];
}
cout<<ans;
}

[俺们学校的题]伪.GCD的更多相关文章

  1. Stern-Brocot Tree、伪.GCD 副本

    Stern-Brocot Tree.伪.GCD 副本 伪.GCD 问题 1:\(f(a,b,c,n) = \sum_{i=0}^{n} [\frac{ai+b}{c}]\) Case 1: \(a\g ...

  2. [NOIP2009] $Hankson$ 的趣味题 (数论,gcd)

    题目链接 Solution 此题,用到的结论都是比较浅显的,但是,我竟然没想到反过来枚举... 只有50分... 被自己蠢哭... 结论比较浅显: 1.对于两个正整数\(a\),\(b\),设 \(g ...

  3. 【Luogu】P1072Hankson的趣味题(gcd)

    这题真TM的趣味. 可以说我的动手能力还是不行,想到了算法却写不出来.以后说自己数论会GCD的时候只好虚了…… 我们首先这么想. x与a0的最大公约数为a1,那么我们把x/=a1,a0/=a1之后,x ...

  4. CodeForces 992B Nastya Studies Informatics + Hankson的趣味题(gcd、lcm)

    http://codeforces.com/problemset/problem/992/B  题意: 给你区间[l,r]和x,y 问你区间中有多少个数对 (a,b) 使得 gcd(a,b)=x lc ...

  5. 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)

    洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...

  6. 【HDU5512】 2015沈阳赛区D题 规律题(GCD)

    第一篇博客,就从一个比较简单的题目入手吧! 题目: [HDU5512] 题意: 有n个塔,编号为1~n,  编号为a,b的塔已经维修好,此外其他的塔都需要维修.塔的维修是有顺序的,每次只能维修编号为k ...

  7. noj 2069 赵信的往事 [yy题 无限gcd]

    njczy2010 2069 Accepted 31MS   224K 1351Byte G++ 2014-11-13 13:32:56.0 坑爹的无限gcd,,,尼玛想好久,原来要x对y算一次,y再 ...

  8. 2019CCPC-江西省赛C题 HDU6569 GCD预处理+二分

    Trap Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Subm ...

  9. [hackerrank]John and GCD list

    https://www.hackerrank.com/contests/w8/challenges/john-and-gcd-list 简单题,GCD和LCM. #include <vector ...

随机推荐

  1. ModelSerializer组件

    ModelSerializer组件 一 .DRF模型类序列化器 如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一 ...

  2. fastjson转换对象时出错,"$ref": "$.data.list[0].xxxx"

    出现$ref: "$.list[2]"的原因是因为循环引用/内存对象重复. $ref”:”..” 上一级“$ref”:”@” 当前对象,也就是自引用“$ref”:”$” 根对象{& ...

  3. LOJ3146 APIO2019路灯(cdq分治+树状数组)

    每个时刻都形成若干段满足段内任意两点可达.将其视为若干正方形.则查询相当于求历史上某点被正方形包含的时刻数量.并且注意到每个时刻只有O(1)个正方形出现或消失,那么求出每个矩形的出现时间和消失时间,就 ...

  4. 快速生成html文本文档——typora

    下载地址:https://www.typora.io/#windows 一.工具界面: 二.使用工具编辑: 三.导出为html: 四.打开html查看: Markdown语法教程:https://ww ...

  5. C++使用代码创建一个Windows桌面应用程序

    WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...

  6. django-nginx与uwsgi项目部署

    uwsgi是提供动态服务的 nginx反向代理 在项目中创建一个settings.py的副本.我这里重命名为copy_settings.py,将配置文件中的DEBUG=False 修改项目下wsgi. ...

  7. HTML5的常用的标签

    HTML5对比HTML4新增了很多元素,也删除了部分元素(可以用css样式表方式替代)所以我只列出HTML5最常用的几个标签. head标签中: <meta http-equiv="X ...

  8. 如何使用API的方式消费SAP Commerce Cloud的订单服务

    最近Jerry在做一个微信和SAP Commerce Cloud集成的项目,需要在微信里调用后者的Restful API进行订单创建和读取.以前Jerry对SAP Commerce Cloud知之甚少 ...

  9. Linux的网络不通流程

    a:xshell连不上的问题第一步:检查网络适配器,是否禁用vmware的虚拟机网卡第二步:检查vmware net8的地址是否为10.0.0.1第三步:检查系统的vmware服务是否启动第四步:检查 ...

  10. 删除Ubuntu的UEFI启动项

    bcdedit 删除 千万不要手贱用diskpart之类的命令直接删除文件夹,大写的没,有,用! 感谢这个视频的up主,youtube看不到请翻墙.https://www.youtube.com/wa ...