ぺるせんたげの学習帳

手作り数学のブログです

ぺるコン第3問をPythonに解かせてみた+おまけ

2018年秋にツイッターぺるせんたげ数学コンテスト(ぺるコン)と題した数学の問題3問セットを公開しました。結構拡散してもらって、何人かが解答をくれたりツイートしてくれて、出題者としてとても楽しませてもらいました。
ありがとうございます。m( )m

さて、今回の本題。ぺるコン3問目です。
まずマシンパワーによる力業で解き、その後でちゃんとした解答例も公開します。

問題は以下のようなもの。

先に言っておくと、3問目は問題が間違っています。条件を満たす組があります。それを探してもらうという問題に変更しました。この記事でもそうします。

解答例では、素数であることや式変形によって得た満たすべき条件を使ってしらみつぶす量を減らすという方針で解いています。
しかし、現代のコンピュータの圧倒的な計算パワーの前では論理などいらないのです。
力こそパワー。


1. 現代魔法で解いてみよう!

少しどうでもいい話。
プログラムはコンピュータの底知れぬパワーで問題を解決してくれますが、(一部のすごい詳しい人を除いて)ぼくみたいな一般人はコンピュータがどうやって動いているかは知りません。

なんか0と1がピコピコするんでしょ、くらいの認識です。

そんなパワフルさとブラックボックスであることを指して、プログラムのことを現代魔法と呼んでいます。

ぺるコンを作るにあたって主に解答例作成で協力してくれたSOx氏が言い出したことです。

言い得て妙ですね。言い得て妙って言いたかっただけです。


本筋に戻ります。

この3問目の恐らく最初の正解者であるFoxQさん(https://twitter.com/foxq_stm)は、Pythonで解決し、問題文が間違っていることを指摘してくれました。FoxQさんはぺるコンを自身のブログで紹介してくれてもいます。ありがたいことです。以下にそのブログへのリンクを付しておきます。こちらもどうぞ。

sky-time-math.hatenablog.jp


ぼく自身はその方法で確かめていなかったので、この機にやってみようと思いました。


Pythonさんに解いてもらうにあたって考えたのは次のことです。

・順列つくるのどうしよう
・重複判定どうしよう

1つめはループ文(for文)をいっぱい使って作ろうかなぁ、でもめんどくさそうだなぁと思って調べたらitertoolsというとても便利な標準ライブラリを見つけたので、それを使いました。たった1行で9!=362880個の順列を作れました。

2つめは、出題者としては分母の積と分子の組が一致していれば重複とみなす、ということにしていたので、出力もこの条件の下で重複は排除したものにしようと思いました。ここで初心者ぺるせんたげは躓きました。
あれこれ考えた結果、

各項を構成する3つの数の組が3つとも重複していて、更に各項の分子が分母を構成する数に対して同じであれば、重複である。

という定義で判断させることにしました。リストとかディクショナリとかいろいろ使ってなんとか実装できました。
あとはプログラムを動かすだけです。

結果はこうなりました。かっこが多いのは仕様です。

pythonさんの解答

一応確かめてみると、

\frac{1}{3×6}+\frac{5}{8×9}+\frac{7}{2×4}=\frac{1}{18}+\frac{5}{72}+\frac{7}{8}=1

おおー、合ってますね。

一瞬で答えを導いてくれました。まさに現代魔法。

2. 論理の力で解いてみよう!

一応理系の大学生なので、計算ゴリラにならずちゃんと論理的に解答を導きました。

証明

まず、分母に57が入らないことを示します。
\frac{a}{bc}+\frac{d}{ef}+\frac{g}{hi}=1 \Leftrightarrow aefhi+bc(dhi+efg)=bcefhiで、右辺が整数なので左辺も整数である。このときb=5ならaefhi5の倍数のはずだが、a~iの中でb以外に5の倍数はないので矛盾する。よってb \neq 5となる。対称性から分母に5は入らず、同様に7も分母に入らない。
このことから、57は分子に入るので、d=5, g=7とできます。

次に57の分母のどちらにも1が入らないことを示します。

1. 15の分母に入らないこと
e=1とすると\frac{5}{f} \lt 1 \Leftrightarrow f=6, 8, 9になるはずである。
1-(i). f=6のとき
\frac{a}{bc}+\frac{7}{hi}=1-\frac{5}{6}=\frac{1}{6}なので、\frac{7}{hi} \lt \frac{1}{6} \Leftrightarrow hi \gt 42
まだ使っていない数として2, 3, 4, 8, 9があるので、これを満たす組は\{h, i\}=\{8, 9\}であるが、
\frac{a}{bc}=\frac{1}{6}-\frac{7}{72}=\frac{5}{72}となり不適。
1-(ii). f=8のとき
\frac{a}{bc}+\frac{7}{hi}=1-\frac{5}{8}=\frac{3}{8}なので、\frac{7}{hi} \lt \frac{3}{8} \Leftrightarrow hi \gt \frac{56}{3} \Leftrightarrow hi \geq 19
まだ使っていない数として2, 3, 4, 6, 9があるので、これを満たす組は\{h, i\}=\{4, 6\}, \{3, 9\}, \{4, 9\}, \{6, 9\}であるが、それぞれ
\{4, 6\} \rightarrow \frac{a}{bc}=\frac{3}{8}-\frac{7}{24}=\frac{1}{12}かつ\{a, b, c\}=\{2, 3, 9\}
\{3, 9\} \rightarrow \frac{a}{bc}=\frac{3}{8}-\frac{7}{27}=\frac{25}{216}かつ\{a, b, c\}=\{2, 4, 6\}
\{4, 9\} \rightarrow \frac{a}{bc}=\frac{3}{8}-\frac{7}{36}=\frac{13}{72}かつ\{a, b, c\}=\{2, 3, 6\}
\{6, 9\} \rightarrow \frac{a}{bc}=\frac{3}{8}-\frac{7}{54}=\frac{53}{216}かつ\{a, b, c\}=\{2, 3, 4\}
となり不適。
1-(iii). f=9のとき
\frac{a}{bc}+\frac{7}{hi}=1-\frac{5}{9}=\frac{4}{9}なので、\frac{7}{hi} \lt \frac{4}{9} \Leftrightarrow hi \gt \frac{63}{4} \Leftrightarrow hi \geq 16
まだ使っていない数として2, 3, 4, 6, 8があるので、これを満たす組は\{h, i\}=\{2, 8\}, \{3, 6\}, \{3, 8\}, \{4, 6\}, \{4, 8\}, \{6, 8\}であるが、それぞれ
\{2, 8\} \rightarrow \frac{a}{bc}=\frac{4}{9}-\frac{7}{16}=\frac{1}{144}かつ\{a, b, c\}=\{3, 4, 6\}
\{3, 6\} \rightarrow \frac{a}{bc}=\frac{4}{9}-\frac{7}{18}=\frac{1}{18}かつ\{a, b, c\}=\{2, 4, 8\}
\{3, 8\} \rightarrow \frac{a}{bc}=\frac{4}{9}-\frac{7}{24}=\frac{11}{72}かつ\{a, b, c\}=\{2, 4, 6\}
\{4, 6\} \rightarrow \frac{a}{bc}=\frac{4}{9}-\frac{7}{24}=\frac{11}{72}かつ\{a, b, c\}=\{2, 3, 8\}
\{4, 8\} \rightarrow \frac{a}{bc}=\frac{4}{9}-\frac{7}{32}=\frac{65}{288}かつ\{a, b, c\}=\{2, 3, 6\}
\{6, 8\} \rightarrow \frac{a}{bc}=\frac{4}{9}-\frac{7}{48}=\frac{43}{144}かつ\{a, b, c\}=\{2, 3, 4\}
となり不適。
以上からe \neq 1である。対称性からf \neq 1なので、5の分母に1は入りません。

2. 17の分母に入らないこと
h=1とすると\frac{7}{i} \lt 1 \Leftrightarrow f=8, 9になるはずである。
2-(i). h=8のとき
\frac{a}{bc}+\frac{5}{ef}=1-\frac{7}{8}=\frac{1}{8}なので、\frac{5}{ef} \lt \frac{1}{8} \Leftrightarrow ef \gt 40
まだ使っていない数として2, 3, 4, 6, 9があるので、これを満たす組は\{e, f\}=\{6, 9\}であるが、
\frac{a}{bc}=\frac{1}{8}-\frac{5}{54}=\frac{7}{216}となり不適。
2-(ii). h=9のとき
\frac{a}{bc}+\frac{5}{ef}=1-\frac{7}{9}=\frac{2}{9}なので、\frac{5}{ef} \lt \frac{2}{9} \Leftrightarrow ef \gt \frac{45}{2} \Leftrightarrow ef \geq 23
まだ使っていない数として2, 3, 4, 6, 8があるので、これを満たす組は\{e, f\}=\{3, 8\}, \{4, 6\}, \{4, 8\}, \{6, 8\}であるが、それぞれ
\{3, 8\} \rightarrow \frac{a}{bc}=\frac{2}{9}-\frac{5}{24}=\frac{1}{72}かつ\{a, b, c\}=\{2, 4, 6\}
\{4, 6\} \rightarrow \frac{a}{bc}=\frac{2}{9}-\frac{5}{24}=\frac{1}{72}かつ\{a, b, c\}=\{2, 3, 8\}
\{4, 8\} \rightarrow \frac{a}{bc}=\frac{2}{9}-\frac{5}{32}=\frac{19}{288}かつ\{a, b, c\}=\{2, 3, 6\}
\{6, 8\} \rightarrow \frac{a}{bc}=\frac{2}{9}-\frac{5}{48}=\frac{17}{144}かつ\{a, b, c\}=\{2, 3, 4\}
となり不適。
以上からh \neq 1である。対称性からi \neq 1なので、7の分母に1は入りません。

今度はaの分母に1が入らないことを示します。
b=1とすると、Q=ef, R=hiとおいて
\frac{a}{c}+\frac{5}{Q}+\frac{7}{R}=1 \Leftrightarrow aQR+5cR+7cQ=cQR \Leftrightarrow (QR-5R-7Q)c=aQR
このときacQR=\frac{9!}{1\cdot 5\cdot 7}=2^{7}\cdot 3^{4} \Leftrightarrow aQR=\frac{2^{7}\cdot 3^{4}}{c}なので
(QR-5R-7Q)c=\frac{2^{7} \cdot 3^{4}}{c} \Leftrightarrow QR-5R-7Q=\frac{2^{7} \cdot 3^{4}}{c^{2}}
 \Leftrightarrow (Q-5)(R-7)=\frac{2^{7} \cdot 3^{4}}{c^{2}}+35となる。cについて場合分けすると、
c=2 \rightarrow (Q-5)(R-7)=2^{5}\cdot 3^{4}+35=2627=37\cdot 71
 \Leftrightarrow (Q, R)=(42, 78), (76, 44), (6, 2634), (2632, 8)
c=3 \rightarrow (Q-5)(R-7)=2^{7}\cdot 3^{2}+35=1187 (素数)
 \Leftrightarrow (Q, R)=(6, 1194), (1192, 8)
c=4 \rightarrow (Q-5)(R-7)=2^{3}\cdot 3^{4}+35=683 (素数)
 \Leftrightarrow (Q, R)=(6, 690), (688, 8)
c=6 \rightarrow (Q-5)(R-7)=2^{5}\cdot 3^{2}+35=323=17\cdot19
 \Leftrightarrow (Q, R)=(22, 26), (24, 24), (6, 330), (328, 8)
c=8 \rightarrow (Q-5)(R-7)=2\cdot 3^{4}+35=197 (素数)
 \Leftrightarrow (Q, R)=(6, 204), (202, 8)
c=9 \rightarrow (Q-5)(R-7)=2^{7}+35=163 (素数)
 \Leftrightarrow (Q, R)=(6, 170), (168, 8)
となり、可能な組(Q, R)が存在しない。
よってb \neq 1である。対称性からc \neq 1なので、aの分母に1は入りません。
以上から、a=1となります。

分子がすべて決定されたので、bc=Pとすると、
QR+5RP+7PQ=PQRとなり、次のように3通りの変形ができる。
 QR=(QR-7Q-5R)P
 5RP=(RP-R-7P)Q
 7PQ=(PQ-5P-Q)R
以上の3式から、QRPを、RPQを、PQRを約数に持つので、P, Q, Rのうち8を含むものは3または9を含み、69は同時には含まれない。
よって可能な組は\{P, Q, R\}=\{12, 24, 36\}, \{18, 24, 24\}, \{6, 24, 72\}, \{8, 18, 72\}, \{12, 12, 72\}
またQR=(QR-7Q-5R)P \Leftrightarrow \frac{QR}{P}=(Q-5)(R-7)-35で、
PQR=2^{7}\cdot3^{4} \Leftrightarrow \frac{QR}{P}=\frac{2^{7}\cdot3^{4}}{P^{2}}なので、
(Q-5)(R-7)=\frac{2^{7}\cdot3^{4}}{P^{2}}+35となる。Pについて場合分けすると、
P=6 \rightarrow (Q-5)(R-7)=2^{5}\cdot3^{2}+35=323=17 \cdot 19
 \Leftrightarrow (Q, R)=(22, 26), (24, 24), (6, 330), (328, 8)
P=8 \rightarrow (Q-5)(R-7)=2\cdot3^{4}+35=197 (素数)
 \Leftrightarrow (Q, R)=(6, 204), (202, 8)
P=12 \rightarrow (Q-5)(R-7)=2^{3}\cdot3^{2}+35=107 (素数)
 \Leftrightarrow (Q, R)=(6, 114), (112, 8)
P=18 \rightarrow (Q-5)(R-7)=2^{5}+35=67 (素数)
 \Leftrightarrow (Q, R)=(6, 74), (72, 8)
P=24 \rightarrow (Q-5)(R-7)=2\cdot3^{2}+35=53 (素数)
 \Leftrightarrow (Q, R)=(6, 60), (58, 8)
P=36 \rightarrow (Q-5)(R-7)=2^{3}+35=43 (素数)
 \Leftrightarrow (Q, R)=(6, 50), (48, 8)
P=72 \rightarrow (Q-5)(R-7)=2+35=37 (素数)
 \Leftrightarrow (Q, R)=(6, 44), (42, 8)
上記のうち可能な組(P, Q, R)(18, 72, 8)のみで、このとき
\frac{1}{18}+\frac{5}{72}+\frac{7}{8}=1となる。
よって解は\frac{1}{3\cdot6}+\frac{5}{8\cdot9}+\frac{7}{2\cdot4}のみです。

(証明終わり)


基本的には場合分けを繰り返します。その場合分けはなるべく少なくなるように工夫し、最終的には31通りの場合分けで解けるようにしました。これを多いと感じるか少ないと感じるかは人それぞれだと思います。

まず57について、素数であることを使って分母に入らないことを示します。そのあとで1が分母に入らないことを示していきます。特殊な値が分母に入ると式の値がおかしくなりそうだという勘でこの順番に分類していきました。

最後は1の分母の数で場合分けをしておしまいです。


だいたいどこも素因数分解でとどめを刺していますが、そのときたくさん素数が出てくるのがポイントです。これを見つけたときは気持ちよかったです。

Pythonさんに導いてもらった答えと一致していることがわかります。論理的に答えが1つしか存在しないことが示されました。めでたしめでたし。


A. 分母を積じゃなくて和にしてしまった

SOx氏がツイッターに上げた問題をPythonさんに解いてもらったんですが、そのついでにぺるコン3問目も解いてみようと思って前述のことをしていました。「この機に」とはSOx氏の問題のことです。

そこで致命的なミスをしました。

上記の通り、積と和を取り違えてしまったのです。

これで計算してみたらなんと答えが3つも出てきてびっくり。答えが1つしかないことは証明したはずなのに……と思ったら、プログラムにミスを見つけることができて一安心。

怪我の功名から生まれた改題の答えは次の通りです。

pythonさんの解答 (その2)

これも一応確かめます。

1つ目:\frac{1}{2+4}+\frac{5}{7+8}+\frac{6}{3+9}=\frac{1}{6}+\frac{5}{15}+\frac{6}{12}=1
2つ目:\frac{2}{6+9}+\frac{3}{7+8}+\frac{4}{1+5}=\frac{2}{15}+\frac{3}{15}+\frac{4}{6}=1
3つ目:\frac{2}{7+8}+\frac{3}{6+9}+\frac{4}{1+5}=\frac{2}{15}+\frac{3}{15}+\frac{4}{6}=1

全部合ってます。答えはこの3通りらしいです。

こんな感じで、
まず方程式を作り
コンピュータに任せ
面白い結果が出たら問題にする

というアプローチで作問するのもいいかもなぁと思いました。これが今回のオチです。


おしまい。