Skip to main content
2 of 4
Converted angle brackets to LaTeX counterparts
Andrew Stacey
  • 26.8k
  • 12
  • 113
  • 187

Edit: not all of this post is showing up, so I will edit it until it does.

Simon's answer points out that the Euclidean algorithm shows that gcd(A,B) divides C is necessary, but I the lack of large container makes the problem more difficult, because obviously you can't get C if $C\gt A+B$. So I think being as explicit as possible will help, if this answer is not too long-winded.

Let's assume $A \lt B$ and gcd$(A, B)=1$ for simplicity. By pouring from B into A and dumping A, you can get any positive integer $B-nA$ left in B. Do this until the answer is less than $A$. Then by transferring the contents to bucket A and filling it from B into it, we get $2B-(n+1)A$. Then subtract $A$ again until you have $2B-kA \lt A$, and we can iterate this process to get $3B-(k+1)A$, etc. This gives any integer linear combination $rB-sA$ up to the size of $A+B$ because once you get the right multiple of $B$ into the combination, you can always add bucketsful of $A$. You just need to get $rB\equiv C$ (mod A) in order to find the correct combination, which happens if gcd$(A, B)=1$.

With this algorithm run in the general case you can get any multiple of gcd($A, B$) up to $A+B$.