1 から
までの整数は、 必ず
の
個の数を足したり引いたりして作ることができます。1 から
までの整数は、 必ずしも
の
個の数を足したり引いたりして作ることはできません。以上のことを、 次の十進BASIC のプログラムを実行して確かめてみましょう。
1 から
までの整数は、 必ず
の
個の数を足したり引いたりして作ることができます。このことは、 次の十進BASIC のプログラムたちを実行すると解ります。
【 問 題 1 】
-
200gの砂糖があります。 上皿天秤 と 1g、2g、4g、8g、16g、32g、64g の重りが1個ずつあれば、 上皿天秤の片方の皿にのみ重りを載せて、 1回の測定だけで 1g から 199g まで1g単位で任意の量の砂糖を量り出せることを示してください。
-
100gまで測り出すことができれば、 それ以上の量を量り出すことは可能です。 残った方がその量になっているからです。 また、 重りの総質量は100gを超えているので大丈夫です。
重りの数列が
で表されることに注目してください。 したがって、 この問題は、 すべての100以下の自然数 n を次のような形式に展開できることを証明する問題と同じです。
上の式は10進数を2進数に変換する式であり、 これを 「 2進法展開 」 と言うことにしましょう。 すべての10進数の数を2進法展することができることは明らかです。
【 問 題 2 】
-
200gの砂糖があります。 上皿天秤 と 1g、3g、9g、27g、81g の重りが1個ずつあります。 1回の測定だけで 1g から 199g まで1g単位で任意の量の砂糖を測り出せることを示してください。 なお、 重りはどちらの皿に乗せても結構です。
-
100gまで測り出すことができれば、 それ以上の量を測り出すことは可能です。 残った方がその量になっているからです。 また、 重りの総質量は100gを超えているので大丈夫です。
重りの数列が
で表されることに注目してください。 したがって、 この問題は、 すべての100以下の自然数 n を次のような形式に展開できることを証明する問題と同じです。
これを 「 平衡3進法展開 」 と言うことにしましょう。
|
10進法 |
3進法 |
平衡3進法 |
|
0 0 0 |
0 0 0 |
0 0 0 |
|
0 0 1 |
0 0 1 |
0 0 1 |
|
0 0 2 |
0 0 2 |
0 1-1 |
|
0 0 3 |
0 1 0 |
0 1 0 |
|
0 0 4 |
0 1 1 |
0 1 1 |
|
0 0 5 |
0 1 2 |
1-1-1 |
|
0 0 6 |
0 2 0 |
1-1 0 |
|
0 0 7 |
0 2 1 |
1-1 1 |
|
0 0 8 |
0 2 2 |
1 0-1 |
|
0 0 9 |
1 0 0 |
1 0 0 |
平衡3進法展開を用いて、 意図した砂糖の量を量り出す方法を求めるプログラムを作ることができます。 十進BASIC のプログラムを下枠の中に示します。
-
JavaScript のプログラム:
プログラムの内容 :
数理論 へ戻る