BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】

【bzoj2820】YY的GCD 莫比乌斯反演 Description神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻×必然不会了,于是向你来请教…… 多组输入Input第一行一个整数T 表述数据组数 接下来T行,每行两个正整数,表示N, MOutputT行,每行一个整数表示第i组数据的结果Sample Input210 10100 10 阅读详情

传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2818

2818: Gcd

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 9236  Solved: 4126
[Submit][Status][Discuss]

Description

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

 

Input

一个整数N

Output

如题

Sample Input

4

Sample Output

4

HINT


对于样例(2,2),(2,4),(3,3),(4,2)


1<=N<=10^7

 

解题思路:

老套路:GCD( x, y )  = p 转换成 GCD( x/p, y/p ) = 1;

那么按照原来的配方,我们需要枚举 x/p 或者 y/p 其中一个数,然后另外一个数的总数通过欧拉函数求得。

假设选择枚举 y/p ,那么还需要暴力一遍枚举素数。(一开始就是直接暴力。。。)

然而O( n ) 内可以同时筛出素数和欧拉函数值:https://oi.abcdabcd987.com/sieve-prime-in-linear-time/

同时记录一下欧拉函数前缀和 sum[k] ,根据上面的转换我们可知:

如果给出 x <= y ,则直接枚举素数枚举y,然后欧拉函数求所有方案数即可;

但是这里没有明确表明 x 和 y 的大小关系, 但是我们还是只求一半 即 (默认 x <= y)的情况,然后这个答案乘以 2 就是 (y <= x)的情况了,需要去一下重(即 x = y = 1)的情况。 

枚举 素数 p ,求 [ 1,  N/p ] 中互质的数对的总数, 即 2*sum[ N/p ]  - 1;

 

AC code:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 const int MAXN = 1e7+10;
 5 bool com[MAXN];
 6 int primes, prime[MAXN], phi[MAXN];
 7 LL sum[MAXN];
 8 
 9 void get_phi(int n){
10     phi[1] = 1;
11     for (int i = 2; i <= n; ++i)
12     {
13       if (!com[i])
14       {
15         prime[primes++] = i;
16         phi[i] = i-1;
17       }
18       for (int j = 0; j < primes && i*prime[j] <= n; ++j)
19       {
20         com[i*prime[j]] = true;
21         if (i % prime[j])
22           phi[i*prime[j]] = phi[i]*(prime[j]-1);
23         else
24           { phi[i*prime[j]] = phi[i]*prime[j]; break; }
25       }
26       //sum[i] = sum[i-1]+phi[i];
27     }
28 }
29 int main()
30 {
31     int N;
32     scanf("%d", &N);
33     get_phi(N);
34     sum[1] = 1;
35     for(int i = 2; i <= N/2; i++){
36         sum[i] = sum[i-1]+phi[i];
37 //        phi[i] = phi[i-1]+phi[i];
38     }
39 //    printf("%d\n", phi[1]);
40     LL ans = 0;
41     for(int i = 0; i < primes; i++){
42         ans = ans + (sum[N/prime[i]]*2-1);
43     }
44     printf("%lld\n", ans);
45 
46     return 0;
47 }

 

容斥原理/莫比乌斯反演/欧拉函数/线性筛专题 欧拉函数 线性筛 杜教筛 莫比乌斯反演 容斥原理 HDU2588 GCD 欧拉函数 给定N,M,求1&lt;=X&lt;=N 且gcd(X,N)&gt;=M条件下X的个数 #include&lt;bits/stdc++.h&gt; using namespace std; int euler(int n) { int ans=n; for(int i=2;i*i&... 阅读详情

相关推荐

第十九届全国大学生智能车竞赛越野信标 硬件篇

全国大学生智能汽车竞赛,越野信标组

2301_77568650的博客 4118

[BZOJ](2818)Gcd ---- 欧拉函数★

题目链接 做法:与UVA11426的原理相同,这里就不细说了,因为几乎一模一样。这个题让我们求满足1&lt;=x,y&lt;=n 在[1,n] 这个区间里面gcd(x,y) = 素数的个数 所以我们可以打一个素数表,去枚举它们的倍数的n 来求满足 gcd(x/i,y/i) = 1 的x/i的个数有phi[y/i] 个 (i是质数) 当x/i == y/i 的时候就是phi[y/i] 个,否则...

WangMeow --- ᶘ ᵒᴥᵒᶅ ฅ^•ﻌ•^ฅ 539

ERA5数据批量下载

ERA5再分析数据的IDM接管下载

qq_38734327的博客 3036

【bzoj4305】数列的GCD

拿来练练基础的组合数学思维还是可以的实际上题目可以转化成:给一个序列A,修改其中的K个成为序列B,对∀i∈[1,m]\forall i\in [1,m]求出使得序列B满足gcd{x∣x∈B}==igcd\{x\mid x\in B\}==i的方案数。既然每个i都要check一次,那就看看对于某个i怎么计算答案fif_{i}好了。 首先注意注意到,对于{x∣x∈A&&i∤x}\{x\mid x\in

GEOTCBRL 1774

读懂 403 Forbidden, the request has been blocked by UCON.:它不是浏览器渲染问题,而是后端安全闸门在拦截

摘要 403 Forbidden 错误表明服务器理解请求但拒绝执行,通常与权限或访问控制有关。当错误信息显示 "blocked by UCON" 时,说明请求被 SAP 体系中的统一连接管控框架拦截。UCON 采用白名单机制限制外部调用,通过记录、评估、强制三阶段流程实施管控。常见触发场景包括 HTTP 服务与通信场景配置不一致、白名单未更新等。排查时应通过 DevTools 确认服务器响应,使用 curl 排除浏览器干扰,并比较不同环境的行为差异。解决方案通常涉及调整配置传输顺序或更新

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 242

【RT-DETR有效改进】手把手带你调参RT-DETR,1:1复现官方版本实验环境

本文是带大家进行调参,利用ultralytics仓库1:1复现RT-DETR官方实验环境,从而在后期发表论文 的时候省去一些不必要的麻烦,例如被审稿人提出质疑,本文的调参内容均有依据,根据RT-DETR官方Github上发布的版本进行设置本文的调参以ResNet18为例,其余的何其的调参基本一致。RT-DETR剑指论文专栏,持续复现各种顶会内容——论文收割机RT-DETR。

Snu77的博客 9942

BZOJ2818 Gcd(欧拉函数)

给定整数N,求1 【题解】 O(n)地枚举gcd 题目转化为:对于每个gcd 当x 可以预处理出phi[]及其前缀和S[] 那么对于每个gcd的全部(x,y),共有2*S[N/gcd]-1对互质,其中(1,1)被计算了两次,所以减去1 因此总复杂度为 O(n) 【代码】 #include #include typedef long long LL; LL phi[

cjk_My steps 529

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

2005: [Noi2010]能量采集 - BZOJ

Description栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量。在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起。 栋栋的植物种得非常整齐,一共有n列,每列有m棵,植物的横竖间距都一样,因此对于每一棵植物,栋栋可以用一个坐标(x, y)来表示,其中x的范围是1至n,表示是在第x列,y的范围是1至m,表示是在第x列的第y棵。 由于能...

weixin_30691871的博客 192

FastGPT智能体开发:FastGPT OpenAPI 知识库接口

FastGPT OpenAPI 知识库接口

王国平的博客 327

【华为OD机试真题】2、在字符串中找出连续最长的数字串含+-号 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >请在一个字符串中找出连续最长的数字串,并返回这个数字串。 如果存在长度相同的连续数字串,返回最后一个。 如果没有符合条件的字符串,返回空字符串””。   注意: 数字串可以由数字”0-9″、小数点”.”、正负号”±”组成,长度包括组成数字串的所有符号。 “.”、“±”仅能出现一次,”.”的两边必须是数字,”±”仅能出现在开头且其后必须要有数字。 长度不定,可能含有空格

KJ.JK 6273

【欧拉筛】BZOJ - 2818 - Gcd

题目链接&lt;https://www.lydsy.com/JudgeOnline/problem.php?id=2818&gt; 题意: 给定整数N,求1&lt;=x,y&lt;=N且Gcd(x,y)为素数的数对(x,y)有多少对。 题解: 对于gcd(x,y)== 1。则gcd(x*p,y*p)== p。 所以要求 gcd(x,y)== p,x&lt;=n,,y&lt;=n  相当...

Eliot的博客 247

YOLOv8改进 | 主干篇 | 利用MobileNetV2替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者⭐⭐⭐⭐。

Snu77的博客 5686

BZOJ2818 Gcd[莫比乌斯反演]

E - Gcd  HYSBZ2818 BZOJ2818 题解: 首先根据题意,设 f(i) 为 gcd(x,y)=i 的对数。 对应的设( d=k*j [k>=1]   因为总是忘记整除左大还是右大) F(j)我们可以很容易求出来,就是,因为 F(j) 代表在 n 里面所有 gcd(x,y)=i 其中 i 是 j 的倍数的所有情况。

ControlBear的博客 834

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

BZOJ2818-莫比乌斯反演/欧拉函数

这道题之前没有看数论函数的时候搞懂了,想到直接用欧拉函数做,现在再来看第一个想法就是这不是莫比乌斯反演嘛. 但还是能用简单数论知识直接做出来的还是尽量做简单一点. 两种方法想到后都写的差不多对了,都爆long long 了.万恶的long long .实在是烦.切记切记,只要是乘积,或者是累加的地方都要注意!!! 用欧拉函数做的话思路是:题目要求的是数对gcd(x,y)为素数的的个数,那么对于每个...

T_T233333333的博客 389

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

bzoj2818 GCD(莫比乌斯反演)

文章目录题意题解代码 别说这么水的题居然还有人写博客。不是我水博客,是这种推式子的题没有latex我根本推不出来。 题意 求∑i=1N∑j=1N[gcd(i,j)∈P],N≤107\sum_{i=1}^{N}\sum_{j=1}^{N}[gcd(i,j)\in \mathbb{P}],N\le 10^7i=1∑N​j=1∑N​[gcd(i,j)∈P],N≤107 题解 推式子,首先枚举ppp ∑...

xyyxyyx的博客 273

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU2588(欧拉函数的应用)

打开百度搜索了莫比乌斯,来自哔哩哔哩的一个视频讲的非常的好: https://www.bilibili.com/video/av14325327/ 不过他在讲莫比乌斯反演之前,先讲了两道欧拉函数应用的题: HDU2588 和bzoj2818 GCD Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32...

ccsu_deer 1165

解题报告:BZOJ_2818 Gcd 莫比乌斯反演

2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 4363  Solved: 1919 [Submit][Status][Discuss] Description 给定整数N,求1 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input

Hee的博客~ 350

莫比乌斯反演入门题目(详细)

目录 luoguP2568 GCD hdu1695 GCD luogu3455[POI2007]ZAP-Queries luogu2522 [HAOI2011]Problem b P4318 完全平方数 luoguP1403[AHOI2005]约数研究 ...

dieloupi0136的博客 569

BZOJ2818: Gcd

BZOJ2818: Gcd 题目描述 传送门 题目分析 题目就是在求: \[ Ans=\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)==prime] \] 直接算肯定不行,改成枚举质数 \[ Ans=\sum_{d\in prime}\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)==d] \] 根据反演套路,设两个函数 \[ f(d)=\sum_{i=1}...

weixin_30263277的博客 210

BZOJ 2818: Gcd(欧拉函数的应用)

题目来源:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 2818: Gcd Time Limit:10 SecMemory Limit:256 MB Submit:9819Solved:4363 [Submit][Status][Discuss] Description 给定整数N,求1<=x,y<=...

ccsu_deer 682

BZOJ 2818 Gcd(gcd(x,y)为素数/欧拉函数/莫比乌斯反演)

题目链接: BZOJ 2818 Gcd 题意: x∈[1,N],y∈[1,N],gcd(x,y)=素数的有序对(x,y)的对数。x\in [1,N],y\in [1, N],gcd(x,y)=素数的有序对(x,y)的对数。 分析: 对于一个素数p,如果gcd(x,y)=p,那么相当于x∈[1,Np],y∈[1,Ny]的(x,y)的对数,又因为是有序对,需要乘以2,那么就是∑Npi=12∗ϕ

ramay7 1695

莫比乌斯反演——专题练习

首先是模板题三连 hdu1695——求gcd(x,y)=k的对数(注意去重) bzoj2301——求gcd(x,y)=k的对数(不用去重,在上题的基础上加了一个容斥,并且用整除分块加速求和) bzoj2818——求gcd(x,y)=p的对数(p是质数,线性筛时求公式推导出来的前缀和(也可以直接转化成欧拉函数求和),用整除分块加速) 然后是两个应用题 SPOJ - VLATTICE—...

weixin_30757793的博客 210

BZOJ 2818 Gcd - Euler函数/莫比乌斯反演

考察内容:Euler函数 题意:求Σ(1 分析: 若gcd(i,j)=p,将i与j同除以p,则gcd(i/p,j/p)=1,而i,j最大值为n,则在p的情况下即为求i/p(i 注意开long long不然会炸 #include #include #include #include #include using namespace std; const

x_1023的博客 296

[BZOJ2818]Gcd(莫比乌斯反演)

为什么莫比乌斯反演这么多叫gcd的。。

薇小薇 579
上一篇: HDU 2588 GCD 【Euler + 暴力技巧】
下一篇: Codeforces Round #535 (Div. 3) E2. Array and Segments (Hard version) 【区间更新 线段树】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值