365. 水壶问题

 1 // 而贝祖定理告诉我们,ax+by=z 有解当且仅当z是x,y的最大公约数的倍数。
 2 // 因此我们只需要找到x,y的最大公约数并判断z是否是它的倍数即可。
 3 
 4 //纯粹的数学问题
 5 class Solution 
 6 {
 7 public:
 8     bool canMeasureWater(int x, int y, int z) 
 9     {
10         if (x + y < z) return false;//1、1、12
11         if (x == 0 || y == 0) return z == 0 || x + y == z;
12         return z % gcd(x, y) == 0;
13     }
14 
15     int gcd(int a, int b)
16     {
17         return b ? gcd(b, a % b) : a;
18     }
19 };

 

posted @ 2020-04-22 23:20  Jinxiaobo0509  阅读(87)  评论(0)    收藏  举报