問題
2017年日本数学オリンピック予選(公財)数学オリンピック財団
問題7、激ムズ。いったいどんな人がこの問題できるのだろう。まず、問題の意味を理解するだけで10分はかかる。どんな問題なのかというと、
1,2,…,1000の並べ替え\(a_1,a_2,…,a_{1000}\)
が良い並べ方とは,次を満たすこととする:
1000以下の正の整数\(m,n\)に対し,\(n\)が\(m\)の倍数ならば\(a_n\)は\(a_m\)の倍数である。
このとき、次の条件をみたす最小の整数\(k\)を求めよ.
条件:\(b_k \ne k\)を満たすよい並べ替え\(b_1,b_2,…,b_{1000}\)が存在する.
問題のコメント
まず、\(1000\)以下の整数と範囲がめちゃくちゃ広いです。もう、\(1000\)ぐらいまでは素因数分解を余裕でできなければ解けないです。計算量も半端ないです。\(100\)以下の整数だったとしてもかなりの計算量です。計算機持ち込み可能でも太刀打ちできません(私には)。
問題文には、倍数を使って書かれていますが、約数と読み替えたほうがわかりやすいと思います。つまり、「\(n\)が\(m\)の倍数ならば\(a_n\)は\(a_m\)の倍数である。」は、
「\(m\)が\(n\)の約数ならば\(a_m\)は\(a_n\)の約数である。」。
読み替えたところで、そんなに簡単になるわけじゃないですが、数字の絞り込みがしやすいかと。
さて、問題の主役となる、「よい並べ替え」について。「そんなよい並べ替えは存在するのか?」そこからして疑問ですが、小さな数で試してみます。つまり、よい並べ替えの例を作ってみます。この時に、倍数を約数に置き換えたほうが数字が発散しにくいかな?と思うのですが、そこは個人差でしょうか。
小さい順に並べた場合もよい並べ替えの一例です。この並べ方を自明なよい並べ方と呼ぶことにします。問題は自明でないよい並べ方を見つけよということになります。
一番な簡単な例は、\(3\)以下の整数で並べ替え\((1,3,2)\)
の場合です。約数がないのでよい並べ方であることの確認も簡単です。
\(k=2\)で\(b_k \ne k\)
も満たしています。
もうちょっと数字が多い例では、\((1,2,3,4,7,6,5)\)
こういうのが、7以下の整数でのよい並べ方の例となります。
逆によい並べ替えで<ない>例は7以下の整数の並べ替えで示すと、
\(7,6,5,4,3,2,1\)
や\(1,4,3,2,7,6,5\)
など、たくさんあります。
念のために上記がよい並べ替えでないことを確認してみます。
まず、\(a_1=7,a_2=6,a_3=5,a_4=4,a_5=3,a_6=2,a_7=1\)
について、4は2の倍数ですが、\(a_4=4\)
は\(a_2=6\)の倍数でありません。
次の例、\(a_1=1,a_2=4,a_3=3,a_4=2,a_5=7,a_6=6,a_7=5\)
について、6は2の倍数ですが、\(a_6=6\)
は\(a_2=4\)の倍数でありません。
ここまで、問題の意味を解きほぐすだけでも、かなりの時間を要しました。
考え方
さて、いよいよ問題にとりかかります。
1000までの自然数を並べ替えるパターンは、1000!もあり膨大です。
そこで、よい並べ替えがあったとして、ある適当に選んだ数(例えば素数)がどこに入れるかを考えます。
(1)まず、\(1\)がどこに入るかです。
これば、1番目以外には入りようがないです。それは、\(1\)の約数が\(1\)しかないからです。\(a_1=1\)はよい並べ方で確定なのです。
(2)次に、素数がどこにくるか考えます。
素数は約数が2個しなく、1番目は1が鎮座していますから、素数が入れるのは素数番目しかありません。
(3)合成数について考えます。
約数の条件から次の関係がわかります。
\[a_{st}=a_{s}a_{t}\]
そうです、よい並べ替えとは乗法的であるです。このことにすぐ気がついた人は、天才的なひらめきの持ち主だと思います。問題文の並べ替えに引きづられてしまうと、この事実に気が付きにくいでしょう。私も、かなり遠回りをしてこの事に気が付きました。
乗法的であるので、素数\(p\)に対して、\(a_p\)が決まっていれば、合成数はそれを素因数分解すれば、どの位置に入るか自動的にわかります。
(4)並べ替えの条件を言い換える。
例えば、10以下の整数でよい並べ替えを調べるとわかりますが、素数と素数を交換しただけでは、並べ替えができないことがわかります。
例えば、5以下の整数でよい並べ替えを作ろうとおもって、素数2と3を入れ替えると、
\((1,3,2,9,5)\)
となってしまい、4が9に変わってこれは5以下の数の並べ替えではなくなってしまいます。
並べ替えが成立するための条件として、並べ替えた数をすべて掛けた数を考えます。この場合1000以下の数の並べ替えを考えていますから、\(\{a_i\})\)がよい並べ替えだとすると
\[\prod_{i=1}^{1000}a_i=1000!\]
でなければなりません。
なんと、この問題は、1000!の素因数分解が必要です。気絶しそうです。
(5)1000!の素因数分解からよい並べ替えを考える。
もう書くのもくたびれるぐらい考えました。他にやり方があるんだろうか、こんなにも計算しないといけないのだろうか?
ここで、EXCELの登場です。すみません。素因数分解にEXCELを使わせていただきます。ギブアップです。
\[1000!=2^{φ(2)}3^{φ(3)}5^{φ(5)}\cdots 997^{φ(997)}\]
と素因数分解した素数\(p\)の指数を\(φ(p)\)で表すことにして、それぞれの\(φ(p)\)
を(EXCELを使って)求めます。
結論からいうと、よい並べ替えとは、\(φ(p)=φ(q),p \ne q\)
となる素数\(p,q\)を入れ替えればできるのです。このような\(p,q\)が存在することはすぐにわかります。
たとえば、\(p=991,q=997\)。
\(φ(p)=φ(q),p \ne q\)となる最小の素数pをなんとか求めます。
EXCEL使いました。しかも、\(500 \lt p\)の場合は、\(φ(p)=1\)
なので省略。
p | φ(p) | p | φ(p) | p | φ(p) | p | φ(p) | |||
2 | 994 | 101 | 9 | 233 | 4 | 383 | 2 | |||
3 | 498 | 103 | 9 | 239 | 4 | 389 | 2 | |||
5 | 249 | 107 | 9 | 241 | 4 | 397 | 2 | |||
7 | 164 | 109 | 9 | 251 | 3 | 401 | 2 | |||
11 | 98 | 113 | 8 | 257 | 3 | 409 | 2 | |||
13 | 81 | 127 | 7 | 263 | 3 | 419 | 2 | |||
17 | 61 | 131 | 7 | 269 | 3 | 421 | 2 | |||
19 | 54 | 137 | 7 | 271 | 3 | 431 | 2 | |||
23 | 44 | 139 | 7 | 277 | 3 | 433 | 2 | |||
29 | 35 | 149 | 6 | 281 | 3 | 439 | 2 | |||
31 | 33 | 151 | 6 | 283 | 3 | 443 | 2 | |||
37 | 27 | 157 | 6 | 293 | 3 | 449 | 2 | |||
41 | 24 | 163 | 6 | 307 | 3 | 457 | 2 | |||
43 | 23 | 167 | 5 | 311 | 3 | 461 | 2 | |||
47 | 21 | 173 | 5 | 313 | 3 | 463 | 2 | |||
53 | 18 | 179 | 5 | 317 | 3 | 467 | 2 | |||
59 | 16 | 181 | 5 | 331 | 3 | 479 | 2 | |||
61 | 16 | 191 | 5 | 337 | 2 | 487 | 2 | |||
67 | 14 | 193 | 5 | 347 | 2 | 491 | 2 | |||
71 | 14 | 197 | 5 | 349 | 2 | 499 | 2 | |||
73 | 13 | 199 | 5 | 353 | 2 | |||||
79 | 12 | 211 | 4 | 359 | 2 | |||||
83 | 12 | 223 | 4 | 367 | 2 | |||||
89 | 11 | 227 | 4 | 373 | 2 | |||||
97 | 10 | 229 | 4 | 379 | 2 |
\(φ(p)=φ(q),p \ne q\)
となる最小の素数\(p=59\)
が(Excelの助けをかりて)求まりました。
(6)求める解がk=59であること。
求めた59の最小性から、59より小さい素数pでは、\(φ(p)=φ(q),p \ne q\)
となる素数qがありません。つまり、9より小さい素数pは、入れ替えの候補になれません。
59より小さい合成数に対しては、59未満の素数pに対して\(a_p=p\)
であることから、やはり、
\(k \lt 59\)の場合、\(a_k=k\)
となってます。
したがって、求める答えは、59。
答え
k=59とすると、素数59と61の入れ替えでできるよい並べ替え
\(b_1,b_2,…,b_{1000}\)
は、\(b_{59}=61 \ne 59 \)
となって題意を満たす。
コメント
考え方も難しいですが、計算に相当の時間を要する問題だと思います。
もっと、効率的なやり方があるのかもしれませんが、一般人に対しては、30以下の整数の並べ替えぐらいにして欲しいです。
ちなみに、30以下の整数でのよい並べ方で非自明なもとして、11,13を入れ替えて作ったよい並べ替え、
(1,2,3,4,5,6,7,8,9,10,13,12,11,14,15,16,17,18,19,20,21,26,23,24,25,22,27,28,29,30)
があります。
[ad#foot]