力扣365-水壶问题

水壶问题

题目链接

解题思路

  1. 假设两个水壶分别为A,B,容量为a,b;想要凑出C升的水
  2. 将A,B两壶看作一个整体
  3. 那么,这个整体只存在四种操作+a,-a,+b,-b;
  4. +a:就是将A壶装满
  5. -a:就是将A壶清空
  6. +b:就是将B壶装满
  7. -b:就是将B壶清空
  8. 想要凑出C升的水壶,需要满足xa+yb=c
  9. 即我们需要对A壶进行x次操作,对B壶进行y次操作,使得可以凑出C升的水
  10. 要想使得xa+yb=c成立,由裴蜀定理知道,要使的a和b的最大公约数可以整除c
c++ 复制代码
class Solution {
public:

    int gcd(int a,int b){
        return b ? gcd(b,a % b) : a;
    }
    bool canMeasureWater(int a, int b, int c) {
        if(c > a + b) return false;
        return !c || c % gcd(a,b) == 0;
    }
};
相关推荐
TechPioneer_lp17 小时前
腾讯测试开发岗位 LeetCode 高频题汇总(2026版)
数据结构·算法·大厂笔试·leetcode高频题·腾讯测试开发·大厂校招·大厂春招
爱敲代码的菜菜17 小时前
【面试】软件测试
面试·职场和发展
551只玄猫17 小时前
【操作系统原理 实验报告6】磁盘调度算法
算法·操作系统·os·实验报告·操作系统原理·磁盘调度算法·磁盘调度
2301_7938046917 小时前
C++中的访问者模式变体
开发语言·c++·算法
2501_9454248017 小时前
模板代码版本兼容
开发语言·c++·算法
沉鱼.4417 小时前
最小生成树
算法
m0_5180194817 小时前
C++中的委托构造函数
开发语言·c++·算法
m0_7434703717 小时前
高性能计算框架实现
开发语言·c++·算法
前端的阶梯17 小时前
深入浅出的聊下AI Agent
算法·架构