2018年秋にツイッターでぺるせんたげ数学コンテスト(ぺるコン)と題した数学の問題3問セットを公開しました。結構拡散してもらって、何人かが解答をくれたりツイートしてくれて、出題者としてとても楽しませてもらいました。
ありがとうございます。m( )m
さて、今回の本題。ぺるコン3問目です。
まずマシンパワーによる力業で解き、その後でちゃんとした解答例も公開します。
問題は以下のようなもの。
数学コンテストを開催します!
— ぺるせんたげ(シン・懲役) (@percentage011) 2018年10月27日
以下の問題を考えてみてください
制限時間とかは特にないです
最初に全て解けた人をめっちゃ褒めます
問題制作者:ぺるせんたげ @percentage011
協力してくれた人:SOx @SOx_S_R_M pic.twitter.com/sejhERZTdR
先に言っておくと、3問目は問題が間違っています。条件を満たす組があります。それを探してもらうという問題に変更しました。この記事でもそうします。
解答例では、素数であることや式変形によって得た満たすべき条件を使ってしらみつぶす量を減らすという方針で解いています。
しかし、現代のコンピュータの圧倒的な計算パワーの前では論理などいらないのです。
力こそパワー。
1. 現代魔法で解いてみよう!
少しどうでもいい話。
プログラムはコンピュータの底知れぬパワーで問題を解決してくれますが、(一部のすごい詳しい人を除いて)ぼくみたいな一般人はコンピュータがどうやって動いているかは知りません。
なんか0と1がピコピコするんでしょ、くらいの認識です。
そんなパワフルさとブラックボックスであることを指して、プログラムのことを現代魔法と呼んでいます。
ぺるコンを作るにあたって主に解答例作成で協力してくれたSOx氏が言い出したことです。
言い得て妙ですね。言い得て妙って言いたかっただけです。
本筋に戻ります。
この3問目の恐らく最初の正解者であるFoxQさん(https://twitter.com/foxq_stm)は、Pythonで解決し、問題文が間違っていることを指摘してくれました。FoxQさんはぺるコンを自身のブログで紹介してくれてもいます。ありがたいことです。以下にそのブログへのリンクを付しておきます。こちらもどうぞ。
ぼく自身はその方法で確かめていなかったので、この機にやってみようと思いました。
Pythonさんに解いてもらうにあたって考えたのは次のことです。
・順列つくるのどうしよう
・重複判定どうしよう
1つめはループ文(for文)をいっぱい使って作ろうかなぁ、でもめんどくさそうだなぁと思って調べたらitertoolsというとても便利な標準ライブラリを見つけたので、それを使いました。たった1行で個の順列を作れました。
2つめは、出題者としては分母の積と分子の組が一致していれば重複とみなす、ということにしていたので、出力もこの条件の下で重複は排除したものにしようと思いました。ここで初心者ぺるせんたげは躓きました。
あれこれ考えた結果、
各項を構成する3つの数の組が3つとも重複していて、更に各項の分子が分母を構成する数に対して同じであれば、重複である。
という定義で判断させることにしました。リストとかディクショナリとかいろいろ使ってなんとか実装できました。
あとはプログラムを動かすだけです。
結果はこうなりました。かっこが多いのは仕様です。
一応確かめてみると、
おおー、合ってますね。
一瞬で答えを導いてくれました。まさに現代魔法。
2. 論理の力で解いてみよう!
一応理系の大学生なので、計算ゴリラにならずちゃんと論理的に解答を導きました。
証明
まず、分母にとが入らないことを示します。
で、右辺が整数なので左辺も整数である。このときならはの倍数のはずだが、~の中で以外にの倍数はないので矛盾する。よってとなる。対称性から分母には入らず、同様にも分母に入らない。
このことから、とは分子に入るので、とできます。
次にとの分母のどちらにもが入らないことを示します。
1. がの分母に入らないこと
とするとになるはずである。
1-(i). のとき
なので、
まだ使っていない数としてがあるので、これを満たす組はであるが、
となり不適。
1-(ii). のとき
なので、
まだ使っていない数としてがあるので、これを満たす組はであるが、それぞれ
かつ
かつ
かつ
かつ
となり不適。
1-(iii). のとき
なので、
まだ使っていない数としてがあるので、これを満たす組はであるが、それぞれ
かつ
かつ
かつ
かつ
かつ
かつ
となり不適。
以上からである。対称性からなので、の分母には入りません。
2. がの分母に入らないこと
とするとになるはずである。
2-(i). のとき
なので、
まだ使っていない数としてがあるので、これを満たす組はであるが、
となり不適。
2-(ii). のとき
なので、
まだ使っていない数としてがあるので、これを満たす組はであるが、それぞれ
かつ
かつ
かつ
かつ
となり不適。
以上からである。対称性からなので、の分母には入りません。
今度はの分母にが入らないことを示します。
とすると、とおいて
このときなので
となる。について場合分けすると、
(素数)
(素数)
(素数)
(素数)
となり、可能な組が存在しない。
よってである。対称性からなので、の分母には入りません。
以上から、となります。
分子がすべて決定されたので、とすると、
となり、次のように通りの変形ができる。
以上の式から、はを、はを、はを約数に持つので、のうちを含むものはまたはを含み、とは同時には含まれない。
よって可能な組は
またで、
なので、
となる。について場合分けすると、
(素数)
(素数)
(素数)
(素数)
(素数)
(素数)
上記のうち可能な組はのみで、このとき
となる。
よって解はのみです。
基本的には場合分けを繰り返します。その場合分けはなるべく少なくなるように工夫し、最終的には通りの場合分けで解けるようにしました。これを多いと感じるか少ないと感じるかは人それぞれだと思います。
まずとについて、素数であることを使って分母に入らないことを示します。そのあとでが分母に入らないことを示していきます。特殊な値が分母に入ると式の値がおかしくなりそうだという勘でこの順番に分類していきました。
最後はの分母の数で場合分けをしておしまいです。
だいたいどこも素因数分解でとどめを刺していますが、そのときたくさん素数が出てくるのがポイントです。これを見つけたときは気持ちよかったです。
Pythonさんに導いてもらった答えと一致していることがわかります。論理的に答えが1つしか存在しないことが示されました。めでたしめでたし。
A. 分母を積じゃなくて和にしてしまった
SOx氏がツイッターに上げた問題をPythonさんに解いてもらったんですが、そのついでにぺるコン3問目も解いてみようと思って前述のことをしていました。「この機に」とはSOx氏の問題のことです。
そこで致命的なミスをしました。
上記の通り、積と和を取り違えてしまったのです。
これで計算してみたらなんと答えが3つも出てきてびっくり。答えが1つしかないことは証明したはずなのに……と思ったら、プログラムにミスを見つけることができて一安心。
怪我の功名から生まれた改題の答えは次の通りです。
これも一応確かめます。
1つ目:
2つ目:
3つ目:
全部合ってます。答えはこの3通りらしいです。
こんな感じで、
まず方程式を作り
コンピュータに任せ
面白い結果が出たら問題にする
というアプローチで作問するのもいいかもなぁと思いました。これが今回のオチです。
おしまい。