出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/water-and-jug-problem
2リットルの容量があり、xとyリットルのケトルと水の無制限です。これら二つのやかんを使用することにより、zは正確リットルの水を得ることが可能かどうかを判断してください?
水の場合はZリットル、最後の2以上が満開に行われたケトルを使用してください。
あなたの許可を得て:
任意で満たされたボトル
空のケトルは、任意の
充填又は空になるまでさらにケトルにボトルから水を注ぐ
例1:(有名な「ダイからハード」の例)
输入: x = 3, y = 5, z = 4
输出: True
例2:
输入: x = 2, y = 6, z = 5
输出: False
Javaの:
class Solution {
public boolean 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 % gcb(x,y) == 0;
}
int gcb(int m, int n) {
if (m < n) {// 保证m>n,若m<n,则进行数据交换
int temp = m;
m = n;
n = temp;
}
if (m % n == 0) {// 若余数为0,返回最大公约数
return n;
} else { // 否则,进行递归,把n赋给m,把余数赋给n
return gcb(n, m % n);
}
}
}
Bezu定理:
https://baike.baidu.com/item/%E8%A3%B4%E8%9C%80%E5%AE%9A%E7%90%86/5186593?fromtitle=%E8%B4% 9D%E7%A5%96% E5%AE%9A%E7%90%86&fromid = 5185441