当前位置: 首页 > news >正文

蓝桥杯刷题5--GCD和LCM

目录

1. GCD

1.1 性质

1.2 代码实现

2. LCM

2.1 代码实现

3. 习题

3.1 等差数列

3.2 Hankson的趣味题

3.3 最大比例

3.4 GCD


1. GCD

整数a和b的最大公约数是能同时整除a和b的最大整数,记为gcd(a, b)

1.1 性质

GCD有关的题目一般会考核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)

1.2 代码实现

import java.math.BigInteger;
public class Main {public static void main(String[] args) {System.out.println(gcd(45, 9));                // 9System.out.println(gcd(0, 42));                // 42System.out.println(gcd(42, 0));                // 42System.out.println(gcd(0, 0));                 // 0System.out.println(gcd(20, 15));               // 5System.out.println(gcd(-20, 15));              // -5System.out.println(gcd(20, -15));              // 5System.out.println(gcd(-20, -15));             // -5System.out.println(gcd(new BigInteger("98938441343232"), new BigInteger("33422"))); // 2}public static long gcd(long a, long b) {if (b == 0)   return a;        return gcd(b, a % b);}public static BigInteger gcd(BigInteger a, BigInteger b) {return a.gcd(b);}
}

2. LCM

最小公倍数LCM(the Least Common Multiple)。a和b的最小公倍数lcm(a, b),从算术基本定理推理得到。

2.1 代码实现

    public static int gcd(int a, int b) {if (b == 0)        return a;        return gcd(b, a % b);}public static long lcm(int a, int b) {return (long) a / gcd(a, b) * b;}

3. 习题

3.1 等差数列

import java.util.*;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int num = scan.nextInt();int arr[] = new int[num];for(int i = 0;i<num;i++){arr[i] = scan.nextInt();}Arrays.sort(arr);int min = 0;for(int i = 1;i<num;i++){min = gcd(min,arr[i] - arr[i-1]);}if(min == 0) System.out.println(num);else System.out.println((arr[num-1] - arr[0])/min+1);scan.close();}public static int gcd(int a ,int b){if(b==0) return a;return gcd(b,a%b);}
}

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

3.2 Hankson的趣味题

import java.util.*;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();for(int i = 0;i<n;i++){int a0 = scan.nextInt();int a1 = scan.nextInt();int b0 = scan.nextInt();int b1 = scan.nextInt();int count = 0;for(int x = 1;x<=Math.sqrt(b1);x++){if(b1%x == 0){if(gcd(x,a0) == a1 && lcm(x,b0) == b1){count++;} int y = b1 / x;if (x == y){continue; }                    if (gcd(y, a0) == a1 && lcm(y, b0) == b1){count++; }}}System.out.println(count);}scan.close();}public static int gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);}public static int lcm(int a,int b){return a/gcd(a,b)*b;}
}

3.3 最大比例

import java.util.*;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int num = scan.nextInt();long arr[] = new long[num];for(int i = 0;i<num;i++){arr[i] = scan.nextLong();}Arrays.sort(arr);long q = Long.MAX_VALUE;long t0 = 0;long t1 = 0;for(int i = 0;i<num-1;i++){if(arr[i+1]!=arr[i] && arr[i+1]/arr[i] < q){q = arr[i+1]/arr[i];t0 = arr[i];t1 = arr[i+1];}}long k = gcd(t0,t1);System.out.println(t1/k + "/" + t0/k);scan.close();}public static long gcd(long a,long b){if(b==0) return a;return gcd(b,a%b);}
}

3.4 GCD

import java.util.*;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);long a = scan.nextLong();long b = scan.nextLong();long c = Math.abs(a-b);System.out.println(c - a%c);scan.close();}
}

根据更相减损术可以知道一个等式:gcd(a,b)=gcd(a,b-a) 当然这里的前提是a<=b; 所以gcd(a+k,b+k)=gcd(a+k,b-a) 这里的a和b都是已知的 我们可以设c=b-a 即c是已知的 所以想要使得a+k与c的最大公因子尽可能地大 因为最大最大能到达c 显然这个式子的最大gcd一定为 c ,我们只需要计算出a 最少需要增加多少可以成为 c 的倍数,这个增量即是答案k 

相关文章:

蓝桥杯刷题5--GCD和LCM

目录 1. GCD 1.1 性质 1.2 代码实现 2. LCM 2.1 代码实现 3. 习题 3.1 等差数列 3.2 Hankson的趣味题 3.3 最大比例 3.4 GCD 1. GCD 整数a和b的最大公约数是能同时整除a和b的最大整数&#xff0c;记为gcd(a, b) 1.1 性质 GCD有关的题目一般会考核GCD的性质。   …...

LVS+Keepalived 高可用负载均衡集群

一. 高可用集群的相关知识 1.1 高可用&#xff08;HA&#xff09;集群和普通集群的比较 ① 普通集群 普通的群集的部署是通过一台度器控制调配多台节点服务器进行业务请求的处理&#xff0c;但是仅仅是一台调度器&#xff0c;就会存在极大的单点故障风险&#xff0c;当该调度…...

【RK3288 Android6, T8PRO 快捷按键 gpio 配置上拉输入】

文章目录 【RK3288 Android6&#xff0c; T8PRO 快捷按键 gpio 配置上拉输入】需求开发过程尝试找到没有用的上拉gpio尝试修改pwm1的gpio的默认上拉模式 改动 【RK3288 Android6&#xff0c; T8PRO 快捷按键 gpio 配置上拉输入】 需求 T8pro想要模仿T10 的 快捷按键&#xff…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:LoadingProgress)

用于显示加载动效的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 LoadingProgress() 创建加载进展组件。 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使…...

隐私与创新的交汇点:Partisia Blockchain 重绘技术蓝图

正当我们在这个信息泛滥的时代寻找稳固的信任锚点时&#xff0c;区块链技术应运而生&#xff0c;然而&#xff0c;正如任何科技革命都会遇到的挑战&#xff0c;一个重要的问题摆在了我们面前&#xff1a;如何在不牺牲个人隐私的前提下&#xff0c;享受区块链技术带来的好处&…...

小程序 van-field label和输入框改成上下布局

在组件上面加个样式就行&#xff1a;custom-style"display:block;" <van-field label"备注说明" type"textarea" clearable title-width"100px" custom-style"display:block;" placeholder"请输入" /> …...

跨域资源共享(CORS)

预检请求 预检请求&#xff08;Preflight Request&#xff09;是跨域资源共享&#xff08;CORS&#xff09;机制中的一种特殊请求&#xff0c;主要用于在实际请求之前进行安全性检查。当一个请求可能不满足同源策略&#xff08;即请求的源与目标资源的源不同&#xff0c;源包括…...

excel中去除公式,仅保留值

1.单个单元格去除公式 双击单元格&#xff0c;按F9. 2.批量去除公式 选中列然后复制&#xff0c;选择性粘贴&#xff0c;选值粘贴...

大数据和数据要素有什么关系?

大数据与数据要素之间存在密切的关系。大数据是指海量、多样化、高速生成的数据&#xff0c;而数据要素是指构成数据的基本元素或属性。数据要素包括但不限于数据的类型、结构、格式、单位、精度等。 大数据的产生和应用离不开数据要素的支持。数据要素确定了数据的基本特征和…...

Leetcode 59.螺旋矩阵Ⅱ

1.题目 2.思路 &#xff08;借用代码随想录的图&#xff09; 1.我们将转一圈看作一个循环&#xff08;1->2->3->4->5->6->7->8 这是一个循环&#xff09; 2.在这个循环里&#xff0c;我们要画四条边&#xff08;上右下左&#xff09; 填充上行从左到右 填…...

JWT令牌技术

文章目录 什么是令牌技术为什么需要令牌技术呢JWT 令牌JWT 组成JWT 令牌的使用1. 引入 JWT 依赖生成 JWT 令牌解析 JWT 令牌 什么是令牌技术 令牌技术是一种重要的安全技术&#xff0c;它在多个领域中发挥着关键作用。简单来说&#xff0c;令牌&#xff08;Token&#xff09;可…...

从零学习Linux操作系统 第三十二部分 ansible中剧本的应用

一、什么是playbook及playbook的组成 1.Playbook的功能 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 play就是一个个模块用列表的方式体现出来 playbook的语法是用YAML的预防进行书写的 2.YAML 简介 是一种表达资料序列的格式&#xff0c;类似XM…...

目标网站屏蔽右键检查(使用开发者工具)

问题&#xff1a; 通过网络触手中想要获取某网站的数据出现&#xff1a;鼠标右击&#xff0c;或按ctrl F10 键 无反应&#xff08;也就是打不开类似谷歌的开发工具&#xff09; 问题同等与&#xff1a; 解决网页屏蔽F12或右键打开审查元素 引用&#xff1a; 作者&#xff…...

docker安装ES、LogStash、Kibana

文章目录 一、安装Elasticsearch1. 安装Elasticsearch2. 安装IK分词器3. elasticsearch-head 监控的插件4. 配置跨域 二、安装LogStash三、安装kibana四、SpringBoot集成LogStash&#xff0c;将日志输出到ES中五、 启动项目&#xff0c;监控项目运行 提示&#xff1a;以下是本篇…...

解决对接淘宝开放平台添加商品图片问题

问题 之前工作因队友离开&#xff0c;只一天接手其部分且第二天就要上线此工具产品&#xff0c;测试提了一些Bug&#xff0c;在Bug中有一个是添加商品图片。前端告知不能用、电话离职队友说能用。没办法自己上、追踪代码。 en这块代码跟需求好像不太相符&#xff0c;重写。 …...

总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解

总结&#xff1a;Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备&#xff1a;1.Spring Bean生命周期机制&#xff08;IOC&#xff09;2.Spring依赖注入机制&#xff08;DI&#xff09;&#xff08;1&#xff09;Autowired注解标注属性set方法注入&#xff08;2&…...

Mac下java环境搭建

JDK 教程:MAC安装JDK及环境变量配置-CSDN博客 建议JDK7和JDK8都装上,因为一些老项目是用JDK7开发,使用JDK8编译时报错。(若没有老项目,直接安装jdk8) 若配置环境变量时找不到JDK的安装路径,有两种方式: 方式一、mac默认位置为:/Library/Java/JavaVirtualMachines/…...

mac设置java环境变量

在 macOS 系统上&#xff0c;设置 JAVA_HOME 环境变量可以通过以下步骤进行&#xff1a; 打开终端应用程序。 输入以下命令来查找 Java 的安装路径&#xff1a;/usr/libexec/java_home 终端会返回 Java 的安装路径&#xff0c;类似 /Library/Java/JavaVirtualMachines/jdk1.…...

【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制&#xff08;Roaming Alpha Tag&#xff09; 二、相关配置字段 non_roaming_operator_string_array 是否…...

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法&#xff0c;常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则&#xff0c;从历史样本中集中找出与现在的最相似的一…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...