【蓝桥杯】GCD与LCM

一.概述

最大公约数(GCD)和最小公倍数(Least Common Multiple,LCM)

在C++中,可以使用 std::__gcd(a, b)来计算最大公约数

 1.欧几里德算法/辗转相除法

int gcd(int a,int b){return b?gcd(b, a%b):a;
}

2.lcm

int lcm(int a,int b){return a/gcd(a, b)*b;
}

3.gcd的性质

  1. gcd(a, b) = gcd(a, a+b) = gcd(a, k·a+b)
  2. gcd(ka, kb) = k·gcd(a, b)
  3. 多个整数的最大公约数:gcd(a, b, c) = gcd(gcd(a, b), c)。
  4. 若gcd(a, b) = d,则gcd(a/d, b/d) = 1,即a/d与b/d互素。这个定理很重要。
  5. gcd(a+cb, b) = gcd(a, b)
  6. 裴蜀定理:如果两个整数的最大公约数是d, 那么方程ax+by=d一定有解。

二.实战演练

1.等差数列

题目描述:

分析:

把n个数据排序,计算它们的间隔,对所有间隔做GCD,结果为公差。最少数量等于:(最大值-最小值)/公差+1。


代码实现:

//等差数列
#include<iostream>
#include<algorithm>using namespace std;const int N=1e5;long long n,a[N],gcdd=0;long long gcd(long long a,long long b){return b?gcd(b, a%b):a;
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(long long i=0;i<n;i++){cin>>a[i];}sort(a, a+n);//0和任意一个数x的最大公约数是xfor(long long i=1;i<n;i++){gcdd=gcd(gcdd, a[i]-a[i-1]);}if(gcdd==0){cout<<n<<'\n';}elsecout<<(a[n-1]-a[0])/gcdd+1<<'\n';return 0;
}

2.Hankson的趣味题

题目描述:

 分析:

其实就是暴力,但是因为需要枚举的区间太大了,所以需要剪枝优化。

从1开始枚举到b1,但是这样枚举的空间就太大了,所以需要优化。

如果这个数能够被b1整除,那么才需要去接着进行判断。

另外一个就是通过分解因子,x*y=b1。

代码实现:

//Hankson的趣味题
#include<bits/stdc++.h>using namespace std;long long gcd(long long a,long long b){return b?gcd(b, a%b):a;
}long long lcm(long long a,long long b){return a/gcd(a, b)*b;
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin>>n;while(n--){long long a1,a0,b1,b0;cin>>a0>>a1>>b0>>b1;int ans=0;for(long long i=1;i<=sqrt((double)b1);i++){if(b1%i==0){if(gcd(i,a0)==a1&&lcm(i,b0)==b1){ans++;}long long y=b1/i;if(y==i){continue;}else{if(gcd(y, a0)==a1&&lcm(y,b0)==b1){ans++;}}}}cout<<ans<<'\n';}return 0;
}

3.最大比例

题目描述:

 问题分析:

对于该题,将输入进来的数据先排序。

我们可能会想,能不能用xn/xn-1来获得这个比值呢?也就是说依次的去做除法,然后找到这些倍数的最大公约数。

这个题最烦人的点在于,输出是一个分数,那我们就不得不分别的去处理分子与分母了。

可以分别去找分子和分母的最大公约数。

这个比值的获取,可以通过xn/xn-1,也可以通过xn/x0.

代码实现:

//最大比例
#include<iostream>
#include<algorithm>using namespace std;const int N=105;long long x[N],a[N],b[N];
int n;
//此函数是用来求 a^{n1} a^{n2} 中的a的
long long gcd_sub(long long a,long long b){if(a<b){swap(a, b);}if(b==1)return a;return gcd_sub(b, a/b);
}long long gcd(long long a,long long b){return b?gcd(b, a%b):a;
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);long long cnt=0;cin>>n;for(int i=0;i<n;i++){cin>>x[i];}//排序sort(x,x+n);for(int i=1;i<n;i++){//获取分子和分母long long d=gcd(x[i], x[0]);a[cnt]=x[i]/d;b[cnt]=x[0]/d;cnt++;}long long up=a[0],down=b[0];for(int i=1;i<cnt;i++){up=gcd_sub(a[i], up);down=gcd_sub(b[i], down);}cout<<up<<'/'<<down<<'\n';return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298391.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SourceTree 克隆仓库

随笔记录 目录 1. 背景介绍 2. SourceTree 2.1 本地创建文件夹 2.2 获取Git 远程仓库路径 2.3 sourceTree 克隆代码 3. FAQ 3.1 填写 ssh 仓库路径后&#xff0c;sourceTree 一直提示正在检查源&#xff0c;无法识别git 远程仓库 1. 背景介绍 Sourcetree 是 Windows …

【Apache Doris】周FAQ集锦:第 2 期

【Apache Doris】周FAQ集锦&#xff1a;第 2 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

蓝桥杯第十四届C++A组(未完)

【规律题】平方差 题目描述 给定 L, R&#xff0c;问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 。 输入格式 输入一行包含两个整数 L, R&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个整数满足题目给定条件的 x 的数量。 样例输入 1 5 样例输出 …

Tidb和MySQL性能简单测试对比

一、单SQL性能对比 由于TiDB的并发能力优秀&#xff0c;但是单个SQL执行延迟较差&#xff0c;为了客观对比&#xff0c;所以只用1个线程来压测tidb和mysql&#xff0c;以观察延迟情况 二、并发SQL性能对比 TiDB:v6.5.2 MySQL:8.0.26 &#xff08;单机&#xff09; 三、结论 …

c/c++ | socket tcp client server

突然想着&#xff0c;花一个socket tcp 客户-服务通信 这应该是很经典的流程了吧 感觉还是要训练这种随手画图的能力&#xff0c;毕竟文字的描述还是不及图片强烈 参考01

策略模式图

策略模式 小小的图解 主要的三个角色 Strategy—抽象策略角色ConcreateStrategy—具体策略角色Context—上下文角色 封装了对具体策略的调用可以使用set的依赖注入也可以使用构造方法 核心是上下文角色 只要调用上下文角色就行&#xff0c;实现解耦 策略 工厂 将上下文角…

基于SpringBoot和Vue的金融融资管理系统的设计和实现【附源码】

1、系统演示视频&#xff08;演示视频&#xff09; 2、需要交流和学习请联系

深入了解 Python 中标准排序算法 Timsort

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ Timsort&#xff1a;一个非常快速的、时间复杂度为 O ( n l o g n ) O (n \ log\ n) O(n log n)、稳健&#xff08;即不改变等值元素间的相对顺序&#xff09;的排序算法&#xff0c;在处理真实世界数…

拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

核心要点&#xff1a; 谷歌 2020 SIGCOM基于delay的AIMD拥塞拆分EC和FC&#xff0c;时延敏感场景优势分别计算EC和FC的wnd&#xff08;最核心&#xff09;保障吞吐和低延迟。Swift 因利用延迟的简单性和有效性而闻名包级别的论文&#xff1a;https://dl.acm.org/doi/pdf/10.11…

【C++】二叉搜索数

目录 一、二叉搜索树的概念 二、二叉搜索树的模拟实现 1、定义节点 2、构造二叉树 3、析构二叉树 ​4、拷贝二叉树 5、二叉树赋值 6、插入节点 &#x1f31f;【非递归方式】 &#x1f31f;【递归方式】 7、打印节点 8、搜索节点 &#x1f31f;【非递归方式】 &…

DDR3接口

mig IP核的配置 首先添加mig IP核   然后确认以下工程信息&#xff0c;主要是芯片型号以及编译环境&#xff0c;没什么问题后点击next.   如下图所示&#xff0c;这一页选择"Create Design"&#xff0c;在"Component Name"一栏设置该IP元件的名称&…

Prometheus+grafana环境搭建Nginx(docker+二进制两种方式安装)(六)

由于所有组件写一篇幅过长&#xff0c;所以每个组件分一篇方便查看&#xff0c;前五篇链接如下 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabbitmq(docker二进制两种方式安装)(二)-CSDN博客 Prometheusgrafana环…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组2.0

A立方和 #include<iostream> #include<cmath> using namespace std; int main(){int n, t, flag, x;long long ans 0;for(int i 1; i < 2019; i){t i;flag 0;while(t && !flag){x t % 10;if(x 2 || x 0 || x 1 || x 9) flag 1;t / 10;}if(fl…

prompt 工程案例

目录 prompt 工程是什么&#xff1f; 案例 vllm 推理加速框架 prompt 工程是什么&#xff1f; prompt&#xff1a;提示词&#xff0c;也就是我们使用网页版输入给大模型的内容就叫 prompt&#xff0c;那什么是 prompt 工程呢&#xff1f; 简单理解其实就是利用编写的 prom…

3个 JavaScript 字符串截取方法

在 JavaScript 中&#xff0c;可以使用 substr()、slice() 和 substring() 方法截取字符串. substring() substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集&#xff0c;或从开始索引直到字符串的末尾的一个子集。语法如下&#xff1a; str.substring(inde…

cmake中报错undefined reference to `pthread_create‘的解决方法

出现报错&#xff1a; 解决方法 一般网上会建议在终端指令g/gcc后面增加参数-pthread,但是我们没有用到g/gcc指令. cmake的解决方法是在CMakeLists.txt文件里面增加一行. add_executable(server2 main.cpp) target_link_libraries(server2 pthread)问题就解决了

uniapp切换中英文

一、安装 npm install uni-i18n --save 二、创建中英文切换的文件 1.英文en.js文件 2.中文zh_CN.js文件 三、 main.js中引用 // Vue i18n 国际化 import VueI18n from /common/vue-i18n.min.js; Vue.use(VueI18n);// i18n 部分的配置&#xff0c;引入语言包&#xff0c;注意路…

c# wpf template itemtemplate+ListBox

1.概要 2.代码 <Window x:Class"WpfApp2.Window7"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/…

SCP 从Linux快速下载文件到Windows本地

需求&#xff1a;通过mobaxterm将大文件拖动到windows本地速度太慢。 环境&#xff1a;本地是Windows&#xff0c;安装了Git。 操作&#xff1a;进入文件夹内&#xff0c;鼠标右键&#xff0c;点击Git Bash here&#xff0c;然后输入命令即可。这样的话&#xff0c;其实自己本…

基于SpringBoot+微信小程序的农产品销售平台

一、项目背景介绍&#xff1a; 随着人们收入的不断增加、生活水平的普遍提高,对生活质量的要求也日益凸显。而作为关乎每个人的生命、健康安全的食品卫生、质量无疑更被人们所重视。所以,… 2. 其他国家的绿色有机食品所占其国家食品市场比重比较大,如德国在99年便已达到40%,美…