题目描述:具体描述见原题,简单来说就是按照规则装水。
解题思路:感觉这是一道数学题,只需要判断三个数之间是否满足一定条件即可。具体过程见代码。
具体代码:
func canMeasureWater(x int, y int, z int) bool {
if z == 0 {
return true
}
// 两个水壶都不够装
if x+y < z {
return false
}
// 此段以后,需要 x <= y
if x > y {
x, y = y, x
}
// 只有一个水壶的话,
// 只能提供另一个水壶的容量
if x == 0 {
return y == z
}
// y%x == 0 时,
// x 是初始 x 和 y 的最大公约数
// z%x == 0 的容量都可以提供
for y%x != 0 {
x, y = y%x, x
}
return z%x == 0
}
补充说明:这真是一道数学题。