問題は、e, l, o, s, v の5文字を辞書式順に並べ替える問題です。 (1) 文字列 loves は何番目か? (2) 88番目の文字列は何か?
2025/5/19
1. 問題の内容
問題は、e, l, o, s, v の5文字を辞書式順に並べ替える問題です。
(1) 文字列 loves は何番目か?
(2) 88番目の文字列は何か?
2. 解き方の手順
(1) 文字列 "loves" が何番目かを求めます。辞書式順なので、先頭の文字が若いものから順に並びます。
- 先頭が 'e' の場合: 残りの4文字の並び替えなので、4! = 4 * 3 * 2 * 1 = 24 通り
- 先頭が 'l' の場合:
- 2文字目が 'e' の場合: 残りの3文字の並び替えなので、3! = 3 * 2 * 1 = 6 通り
- 2文字目が 'o' の場合:
- 3文字目が 'e' の場合: 残りの2文字の並び替えなので、2! = 2 * 1 = 2 通り
- 3文字目が 's' の場合: 'l o s e v' と 'l o s v e' の2通り
- 3文字目が 'v' の場合: 'l o v e s' と 'l o v s e' の2通り
従って、"l o v e s"は、先頭が'e'である24個, 次に先頭が'l e'である6個, そして"l o e s v", "l o e v s", "l o s e v", "l o s v e", "l o v e s"と並ぶので、lovesは35番目となります。
(2) 88番目の文字列を求めます。
- 先頭が 'e' の場合: 24通り (1-24番目)
- 先頭が 'l' の場合: 24通り (25-48番目)
- 先頭が 'o' の場合: 24通り (49-72番目)
- 先頭が 's' の場合: 24通り (73-96番目)
88番目は、先頭が 's' であることがわかります。 88 - 72 = 16なので、's' から始まる文字列の中で16番目のものを探します。
- 先頭が 's e' の場合: 3! = 6通り (73-78番目)
- 先頭が 's l' の場合: 3! = 6通り (79-84番目)
- 先頭が 's o' の場合: 3! = 6通り (85-90番目)
16 = 6 + 6 + 4 なので、先頭が 's o' である文字列の中で4番目のものを探します。
- 先頭が 's o e' の場合: 2! = 2通り (85-86番目)
- 先頭が 's o l' の場合: 2! = 2通り (87-88番目)
従って、4番目は 's o l v e' です。
3. 最終的な答え
(1) 文字列 loves は 35 番目
(2) 88番目の文字列は solve