◆東京都 yoppaさんからの解答。
まず、一番大きい(重い)分銅で、計れる分だけ計ります。
あまった分を次に大きい分銅で、さらにその次・・・という具合に行けば良いのではないでしょうか。
つまり、47gを25g,10g,1gで計る場合、
1. 47/25=1 あまり 22
2. 22/10=2 あまり 2
3. 2/1=2 あまり 0
で、それぞれの商が1,2,2なので、
25gが1個、10gが2個、1gが2個の計5個になります。
<感想>
とても興味深い問題だと思います。
10進数から2進数の変換をするときのやり方のちょっと変形の考え方でいけると思ったのですが・・・
あってますか?(ちょっと自信なし)
【コメント】
実はこの解答は90%の正解なのです。
ほとんど大丈夫なのですが、例外もあります。
例えば58gなら25g×2+1g×8の10個より、
25g×1+10g×3+1g×3の7個の方が少ないですから、これは成り立ちません。
その部分だけ修正して、ぜひ正解を見つけてくださいね。
◆広島県 清川 育男さんからの解答。
Ngをはかるとする。
Nを25で割り、商をχ、剰余をN1とする。
N1を10で割り、商をY、剰余をN2とする。
N2を5で割り、商をS、剰余をZとする。
χ>1でS=1のときはχ−1。
25×1+5×1=30。
30/10=3。
Y+3とする。
30gは 25gのおもり1個。1gのおもり5個。計6個。
10gのおもり3個。の方が少ない個数となるから。
1)S=1でしかもχ>1のとき
N=25×χ+10×Y+5×1+Z
=25×(χ−1)+25+10×Y+5+Z
=25×(χ−1)+10×(Y+3)+Z
25gのおもり(χ−1)個。10gのおもり(Y+3)個。1gのおもりZ個。
2)S=0のとき
N=25×χ+10×Y+5×0+Z
=25×χ+10×Y+Z
25gのおもりχ個。10gのおもりY個。1gのおもりZ個。
◆千葉県の高校生 トミーさんからの解答。
1gをx個、10gをy個、25gをz個使うものとする。
ngを作る時を考える。
x,y,zの関係は
x+10y+25z=n......(1)
ここで、10と25は5の倍数なので、10α、25β(α、βは整数)は5の倍数となる。
ゆえに、nを5の倍数とするために、1gのおもりをk個使ってn−kが5の倍数となるようにする。
よって(1)は
10y+25z=n−kとなる。
(a) n−kの下一桁が5の時
・25gのおもりを m=2a−1個(aは自然数)使って下一桁の5を消す。
(但し、mは n−k−25m≧ 0を満たす最大のm)
・10gのおもりを使って残りの重さを作る。
(b) n−kの下一桁が5でない時
・25gのおもりをm=2a個(aは自然数)使う。
(但し、mは n−k−25m≧ 0を満たす最大のm)
・10gのおもりを使って残りの重さを作る。
【コメント】
この解答には本当に感心しました。
1gの方から先に決めていく方が確かに分かりやすいですね。
おみごとの一言です。
◆広島県 清川 育男さんからの解答。
トミーさんの解答をヒントにしての解答
Ngを計量する。
1) N mod 5 は、0,1,2,3,4。
1,2,3,4のときは1gの重りをそれぞれ1個、2個、3個、4個使用する。
2)1)のときの剰余をχ(0,1,2,3,4)とする。
(N−χ)mod 25 は、0,5,10,15,20。
商をYとする。
イ)0のとき 25gの重りをY個使用する。
N=25×Y+10×0+1×χ。
ロ)5のとき 25gの重りを(Y−1)個使用する。
10gの重りを3個使用する。
N=25×(Y−1)+10×3+1×χ。
ハ)10のとき 25gの重りをY個使用する。
10gの重りを1個使用する。
N=25×Y+10×1+1×χ。
ニ)15のとき 25gの重りを(Y−1)個使用する。
10gの重りを4個使用する。
N=25×(Y−1)+10×4+1×χ。
ホ)20のとき 25gの重りをY個使用する。
10gの重りを2個使用する。
N=25×Y+10×2+1×χ。
以上です。
1g、10gの重りは4個あれば十分であることが示される点がいいと思います。
【コメント】
なるほど、この解答はおもりの個数が算出しやすいですね。
1g、10gのおもりは4個でよかったのですか!
実はプログラムではしらみつぶしに探しているのですが。
さすがに、3種類のおもりの重さを変化させた場合は一般的には解けないでしょうから、やっぱりしらみつぶしかな。
◆岐阜県 yashi さんからの解答。
47=9×5+2 ― (1)
ここで10gと25gについて考える。
10=2×5 25=5×5となる。
ここで9=2×2+5となり先ほどの10gと25gの関係から答えは
1gを2個、10gを2個、25gを1個の計5個。
ここで任意のNgについて考える。
先ほどと同じように5で割ってみる。
N=5k+l (K,lはともに0以上の整数) − (1)
10=2×5 25=5×5
これによりkを2と5の倍数に分ければおもりの個数がわかる。
つまりk=2a+5bと置き換えると最小の数で計れるおもりの個数がわかるということになる。
ここでaとbはともに0以上の整数でa+bが最小になるような数である。
初めに5の倍数で求めることはひらめいたのですが、一般化するのが意外とわかりづらかったです。
というか今でもわかりづらいですね