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

力扣每日一刷Day 25

Practice Day twenty five:Leetcode T365

好了兄弟姐妹们,今天让我们学习一下肥鼠定理(贝祖定理/裴蜀定理)。今天就不给你们可视化了,这个还是比较简单。

贝祖定理(Bézout's Identity)是数论中一个非常重要的定理,它描述了两个整数的线性组合与它们的最大公约数之间的关系。

贝祖定理的表述:

对于任意两个整数 a 和 b(不同时为 0),存在整数 x 和 y,使得:

ax+by=gcd(a,b)

其中:

  • gcd(a, b) 是 a 和 b 的最大公约数。
  • x 和 y 是满足等式的整数。

示例 :

设 a = 12b = 18

  • gcd(12, 18) = 6
  • 找到整数 x 和 y 使得:

    12x+18y=6

尝试解这个方程:

  • 取 x = -1y = 1,则:

    12×(−1)+18×1=−12+18=6

贝祖定理的含义:

贝祖定理告诉我们:

  • 任何两个整数的线性组合(如 ax + by)都一定是它们的最大公约数的倍数。
  • 反过来,最大公约数 d = gcd(a, b) 也是所有形如 ax + by 的最小正整数。

应用场景:

  1. 求解线性不定方程(如 ax + by = c

    如果 c 是 gcd(a, b) 的倍数,则有解。
  2. 密码学(如 RSA 算法)

    在模逆元计算中需要用到贝祖定理。
  3. 数论问题

    判断某个数是否能表示为两个数的线性组合。

好了,我们来拆解一下题目,看看他要搞什么飞机

题目条件:数字一、数字二、数字一和数字二之间可加减得到新数字、目标数字

题目目的:判断是否可以利用上述数字组合成目标数字

道理就是上面肥鼠定理的道理,我们直接上代码

class Solution {
public:bool canMeasureWater(int x, int y, int z) {if (x + y < z) {return false;}if (x == 0 || y == 0) {return z == 0 || x + y == z;}return z % gcd(x, y) == 0;}
};

九行代码结束战斗

1 第一个条件判断:

if (x + y < z) {return false;
}
  • 如果两个水壶的总容量都小于 z,那无论如何都无法得到 z 升水,直接返回 false

感到奇怪?认为一个水壶可以装多次水,可以多次叠加叠至所需容量的。但问题在于:你只有两个水壶,没有第三个容器。所以这个判断是成立的。

2  第二个条件判断:

if (x == 0 || y == 0) {return z == 0 || x + y == z;
}
  • 如果其中一个水壶容量为 0(比如 x = 0 或 y = 0),那么只能通过另一个水壶来获得水。
  • 此时:
    • 如果 z == 0,可以成功(不装水)。
    • 如果 z == x + y,也可以成功(将另一个水壶装满)。
    • 否则不能。

3 核心逻辑:

return z % gcd(x, y) == 0;
  • 这是贝祖定理(Bézout's Identity)的应用。
  • 它表示:如果 z 是 x 和 y 的线性组合(即存在整数 a 和 b 使得 ax + by = z),并且 z <= x + y(这在前面的if已经验证过了),那么就可以实现。
 关键点:

我是真的没有料到,但

gcd(x, y) 是 C++17 标准中引入的函数,用于计算两个整数的最公约数(Greatest Common Divisor)。

  • 只有当 z 是 gcd(x, y) 的倍数时,才能被表示为 x 和 y 的线性组合。
  • 所以,只要 z % gcd(x, y) == 0,就说明可以完成目标。
  • 这越过了倒水装水的过程,直达终点,流程被极致简化

今天到此结束,数学题真是又难又简单啊

http://www.dtcms.com/a/398896.html

相关文章:

  • Windows安全机制--脚本执行防御
  • Chat2DB:零门槛数据库操作的无界解决方案
  • 即墨网站推广网络经营范围包括哪些
  • dify 源码分析 agent
  • 静态网站开发工具有哪些做网站用的文本编辑器
  • 搜索百科(4):OpenSearch — 开源搜索的新选择
  • 异常以及异常处理
  • 2025年国际知名品牌OMS订单管理系统选型指南:从产品架构,生态资源到成功项目交付案例解析|商派
  • 从传统CNN到ResNet:深度学习中的深层网络革命
  • RAG知识增强系统2 - 检索器retriever
  • 52Hz——FreeRTOS学习笔记——任务的创建
  • 百度权重排名高的网站如何用ps做网站效果图
  • 动态设计网站p2p理财网站开发要求
  • 【AI】【Java后端】RAG 实战示例:SpringBoot + 向量检索 + LLM 问答系统
  • Google Pixel 10 vs iPhone 17
  • 2种方式从springbean中获取bean实例
  • iPhone 无线充电发展历史
  • 做康复医院网站推广普通话手抄报
  • Win版 Visual Studio Code配置C++环境
  • 住房与住房建设部网站中美最新军事新闻最新消息
  • uniapp 项目打包时提示未添加videoplayer模块
  • 深入理解Roo Code中的Temperature参数
  • 四、PyTorch训练分类器教程:小张的CIFAR-10实战之旅
  • Unity-序列帧动画
  • 【每日一问】容性负载和感性负载有什么区别?
  • 做汽车保养的网站上企业信息的网站
  • 4-3〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件包含漏洞-A
  • 郑州网站建设国奥大厦南昌营销网站建设
  • 微服务项目->在线oj系统(Java-Spring)----7.0
  • Ant Design Vue Vue3 table 表头筛选重置不清空Bug