5Lと3Lのボトルで4Lの水を計る
水の移し方
3Lの水をくんで、5Lのボトルに移す。
その後5Lのボトルをいっぱいにしても捨てなければいけないので、 常に3Lの水をくんで5Lの水に移し、いっぱいになったら5Lの水を空にして、と片方向でのやりとりに限定できる。
計ることのできる水
そうすると、計ることのできる水は以下のようになる。
3,6,9,12,15,18,21,24,27,30
ただし5Lの水がいっぱいになったら捨てていくから、計ることのできる水は以下になる。
3,1,4,2,0,3,1,4,2,0,3
3,1,4,2,0のループが続き、4L以下の水であればすべて計れることがわかる。
4Lと6Lのボトルの場合
次に、4Lと6Lのボトルで考える。 くめる水は以下のようになり、
4,8,12,16,20,24
6L以上は捨てられていくから、
4,2,0,4,2,0
4,2,0が続くようになる。
一般化
ここで、問題を一般化してみる。
mLのボトルとnLのボトルがあり(m<n)、
常にmLの水をくんで、nLの水に移し、いっぱいになったらnLの水を空になるので、
計ることのできる水xは以下のようになる。
x = a*m-b*n
ここでaとbの最大公約数をkとすると、 a=a1*k, b=b1*kと置き換えることができ、
x = a1*k*m - b1*k*n
x = k(a1*k - b1*n)
よって、m<nのとき、n以下でかつmとnの最小公倍数の倍数の数だけ水をはかることができることがわかる。
上記式より、3Lと5Lのとき、0,1,2,3,4Lの水がはかれ、 4Lと6Lのとき、0,2,4Lの水がはかることができる。