365.水壶问题

news/2025/2/14 3:16:40/

有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?

如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。

你允许:

  • 装满任意一个水壶
  • 清空任意一个水壶
  • 从一个水壶向另外一个水壶倒水,直到装满或者倒空

示例 1: (From the famous "Die Hard" example)

输入: x = 3, y = 5, z = 4
输出: True

示例 2:

输入: x = 2, y = 6, z = 5
输出: False

能不能使容器中的水刚好为z升。可以用一个公式来表达:z = m * x + n * y其中m,n为舀水和倒水的次数,正数表示往里舀水,负数表示往外倒水,那么题目中的例子可以写成: 4 = (-2) * 3 + 2 * 5,即3升的水罐往外倒了两次水,5升水罐往里舀了两次水。那么问题就变成了对于任意给定的x,y,z,存不存在m和n使得上面的等式成立。根据裴蜀定理,ax + by = d的解为 d = gcd(x, y),那么我们只要只要z % d == 0,上面的等式就有解,所以问题就迎刃而解了,只要看z是不是x和y的最大公约数的倍数就行了,还有个限制条件x + y >= z,因为x和y不可能称出比它们之和还多的水。

class Solution {
public:
    bool canMeasureWater(int x, int y, int z) {
        return z == 0 || (x + y >= z && z % gcd(x, y) == 0);
    }
    int gcd(int x, int y) {
        return y == 0 ? x : gcd(y, x % y);
    }
};


http://www.ppmy.cn/news/249704.html

相关文章

python爬取51job的示例

如何爬取51job的岗位和薪资信息,可参考以下代码 import json import re import sqlite3 import urllib.error import urllib.request from urllib import parsedbpath ./51job.db #kw input("请输入你要搜索的岗位关键字:") #keyword parse.quote(par…

qt中设置QTabWidget,QGroupBox,QScrollArea的样式

引言 本文对标题中所述的三种控件的样式使用样式表来设置其外观。该样式表没有采用样式文件,而是在程序中直接使用函数setStyleSheet()来设置控件的样式。 前期准备 ui文件中各控件的结构如下图; 1.QGroupBox 从上面可以看到,QGroupBox属…

Keil C51之Const对象声明

Keil C51中,可以使用const来对变量进行声明修饰,但自己在认识和使用上一直存在两方面的问题:1、和另一款很流行的MCU C语言开发环境IAR中的意义有一些混淆;2、和Keil C51提供的code类型作用也有一些混淆,这里来进行一下仔细区别和笔记。 一、…

数据库设计之area区域表

这个用起来还可以的比较全,是2015年更新的 在这个版本的数据上我做了个小的改动,如果你使用不方便可以参考改版后的数据:http://blog.csdn.net/u012012240/article/details/51314647 -- phpMyAdmin SQL Dump -- http://www.phpmyadmin.net -- -- 主机: localhost -- 生成日期…

iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配

最近写小程序时,遇到了 iPhoneX 底部小黑线与内容重叠的问题,实际上是iPhoneX安全区域的适配问题,了解清楚这个问题花了挺多时间的,也实操出了结果,忍不住来总结总结。 前言 在苹果 iPhoneX 、iPhone XR等设备上&…

震撼!Area-51 X58

Area-51 X58提供三种Core i7核心处理器的速度,包括2.66GHz,2.93GHz和极端速度3.2GHz。 Core i7 核心处理器目前应该是这个星球上最快的了,带给你的是更快的内存速度。 What does all this give you? An unmatched performance powerhouse with the next…

QT中的滚动条QScrollArea

QT里的滚动条操作&#xff0c; 我理解的QScrollArea对象的使用为&#xff0c;把某个widget绑定到该QScrollArea对象&#xff0c;scrol->setWidget(widget); 绑定的widget对象的长宽超过边界时&#xff0c;会有滚动条的效果。 #include <QtGui/QApplication> #include…

爬虫爬取51job

本文章的所有代码和相关文章&#xff0c; 仅用于经验技术交流分享&#xff0c;禁止将相关技术应用到不正当途径&#xff0c;滥用技术产生的风险与本人无关。 本文章是自己学习的一些记录。 开始 好久没写爬虫了 今天简单的写了个爬取多页51job的爬虫代码 思路 url‘https://…