小手調べ |
12345の5文字を並べ替えたもののうち、 25000より小さいものは何個あるか。
|
解答; |
一万の位が1のとき、4!=24個 一万の位が2のとき、千の位は1,3,4のいずれか。 よって、3×(3!)=18個 以上より、42個があります。 |
辞書式配列の問題は、この問題のように、○○○○○以下の数字は何個あるか、
という問題に帰着させると解きやすくなります。
例題 | SUPERの5文字を並べ替えて単語を作る。 | |
作った全ての単語を辞書式に並べていき、SPRUEのように、
意味を持たない単語も数えるものとする。 | ||
(1) | SUPERは何番目にあるか。 | |
(2) | 50番目の単語は何か。 |
もちろん、全部で5!=120通りですが、単語全てを並べるのは時間がかかりますね。
この問題を分かりやすくするポイントは、数字に置き換えることです。
(このアイデアは佐々木信吾さんより頂きました。ありがとうございます。)
とりあえず、1番目は何か考えましょう。EPRSUですね。
これを順に1,2,3,4,5とします。
文字と数字の対応表も作っておけば更に分かりやすくなります。
1 | 2 | 3 | 4 | 5 |
E | P | R | S | U |
先頭の数字(文字) | 個数 |
---|---|
1(E) | 4!=24個 |
2(P) | 24個 |
3(R) | 24個(小計24×3=72個) |
41(SE) | 3!=6個 |
42,43(SP,SR) | 6個ずつ(小計6×3=18個) |
451(SUE) | 2!=2個 |
先頭の数字(文字) | 個数 | 残り個数 |
---|---|---|
1(E) | 4!=24 | 26 |
2(P) | 4!=48 | 2 |
問題 | FRIENDの6文字を並べ替えて単語を作る。作った全ての単語を辞書式に並べていくとき、 |
(1) | FRIENDは何番目か。 |
(2) | 200番目の単語は何か。 |
(1) | まず、単語内で辞書式に並べると、最初の文字は、DEFINR。 よって、対応表は次の通り。
1,2で始まるものはそれぞれ5!=120個ずつある。(小計240) 31,32,34,35で始まるものはそれぞれ4!=24個ずつある。(小計96) 361,362で始まるものは3!=6個ずつある。(小計12) 3641で始まるものは2!個ある。 次は364215,その次が364251(FRIEND)だから、 全部で240+96+12+2+2=352番目。 | ||||||||||||
(2) | 1で始まる数字は5!=120個あるので、 | ||||||||||||
200番目の単語は2から始まる数字の80番目。
(並べるのが大変なときは更に絞ります。) 21,23,24で始まる単語はそれぞれ4!=24個あるので、 80=24×3+8より、求める単語は25から始まる数字の8番目。 さらに251から始まる単語は3!=6個あるので、 求める文字は253から始まる単語の2番目。 253から始まる単語は順に、253146,253164だから、 200番目の単語は、ENFDRI。 |