数学A / 場合の数
辞書式順序(何番目の数か)
問題
1, 2, 3, 4, 5 の5個の数字をすべて使ってできる5桁の整数を、小さい順に並べる。
(1) 51234 は小さいほうから何番目か。
(2) 小さいほうから80番目の数を求めよ。
ヒントを見る
先頭の数字を固定すると、残りの並べ方が一定個数のかたまりになる。(1)は先頭が小さい数のかたまりを積み上げて何番目かを数える。(2)は目標の番号を、かたまりの大きさで割って先頭から順に絞りこむ。
解答・解説
方針
辞書式(小さい順)の問題は、上の位から「そこに小さい数字が入る整数が何個あるか」を積み上げて数える。
5個の数字の順列は全部で 個。先頭の数字を1つ決めるごとに、残り4桁の並べ方 個のかたまりができる。
このかたまりの個数を数えると、順位や『何番目の数か』が、上の位から1つずつ分かっていく。
解答
⓪ 発想 — どう考え始めるか。 「何番目か」は、 つずつ数えていては終わらない。
先頭の数字を決めると、残り 桁の並びが 個のかたまりになる。このブロック単位で数を積み上げる。
逆に「 番目は?」も、同じブロック割りで上の位から絞り込める。
辞書式は、ブロックの大きさで位取りをする。この見方が主役だ。
5個の数字の順列は 個。先頭の数字を1つ決めると、残り4桁の並びが 個あるので、「先頭が◯の整数」は24個ずつのかたまりになる。
(1) 51234 の順位
先頭が 1, 2, 3, 4 の整数は、それぞれ24個ずつで合計 個あり、これらは全部 51234 より小さい(先頭が5より小さいから)。
次に先頭が5の整数を考える。51234 は、先頭5の後ろが「1234」で、これは残り4個 を小さい順に並べたいちばん小さい並びだ。だから先頭5のかたまりの中では1番目。
(2) 80番目の数
80番目がどの『先頭』のかたまりに入るかを調べる。24個ずつなので
- 先頭1: 1〜24番目、先頭2: 25〜48番目、先頭3: 49〜72番目、先頭4: 73〜96番目
80番目は先頭4のかたまりの中の 番目だ。先頭は4に決まる。
残る数字は 。2桁目を決めると残り3桁が 個ずつのかたまりになる。 を小さい順に見て
- 2桁目1: 1〜6番目、2桁目2: 7〜12番目
8番目は2桁目2のかたまりの 番目。2桁目は2。
残る数字は 。3桁目を決めると残り2桁が 個ずつ。
- 3桁目1: 1〜2番目
2番目はこの中にあり、3桁目は1、その中の2番目。残る の並びは小さい順に「35」(1番目)、「53」(2番目)だから、下2桁は53。
つなげて
発展 — 一歩先へ。 辞書式の順番が決まると、ある並びの「次の並び」を、全部を作り直さずに求められる。
手順はこうだ。右から見て、初めて増加する箇所を探す。そこの数字を、右側にあるより大きい数字のうち最小のものと入れ替え、さらに右側を小さい順に並べ替える。これで辞書式のちょうど つ後ろが得られる。
この「次の順列」の作り方は、コンピュータで順列を辞書順にもれなく生成するときの土台になっている。 個の並びを 番から順に吐き出したり、ある並びから何番か先へ飛んだりできる。数え上げと手順(アルゴリズム)は地続きだ。
(1) 97番目 (2) 42153
別解
別解 — 順位を「階乗進法」の数として読む(得意な人向けの高い視点)。 位取りのかたまりが だったことに注目すると、順位そのものを「位の重みが階乗になった数」として読める。
まず順位を から数え直す(最小の を 番目とする)。ある並びの 始まりの順位は、各桁について「その桁より右にある、自分より小さい数字の個数」を、重み でかけて足した値になる。
(1) では、先頭 の右に小さい数字が 個あり、以降の桁は右に自分より小さい数字が つもない。だから 始まりの順位は 。 始まりに直して 番目。
(2) 番目は 始まりで 。これを階乗の重みで割り分ける。 で、係数は上の桁から 、最後の桁は残り 個で自動的に決まる。この係数は「残っている数字のうち、下から何個を飛ばして次を取るか」を表す。 から 個飛ばして 、残り から 個飛ばして 、残り から 個飛ばして 、残り から 個飛ばして 、最後は 。よって 。
順位と並びを「位の重みが でなく の数」で橋渡しするこの見方なら、順位を つの数として分解するだけで並びが定まる。本解の積み上げと同じ 番目・ にたどり着く。
ポイント
- 先頭を決めるごとに、残り桁の順列 個のかたまりができる
- 順位を求める: 自分より小さい先頭の整数の個数を積み上げる
- 何番目かを求める: かたまりの大きさで割り、上の位から決めていく
よくある間違い
- (1)で「 より小さい数」を数えたあと、 自身の分の を足し忘れて 番目とする。
- (2)で数字を使ったら候補から取り除くのを忘れ、すでに使った数字をまた選んでしまう。
- かたまりの大きさ()を取り違え、上の位を決めるときの個数を数え違える。