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の水がはかることができる。

このエントリーをはてなブックマークに追加
Takatomo Honda avatar
About Takatomo Honda
システム開発 / プロトタイプ開発 / 開発組織の構築 / アプリケーションの内製化 /等、お気軽にご相談ください。