自分は競技プログラミングに関して明らかに行き詰まっていて、最近ではレートさえ落ち始めたので、何かしようと思った。
社会に目を向けると、強い競技プログラマーは数学オリンピックも強そうということがわかった。
だから、数オリをやってみた。
とりあえず2019年のJMO予選をやった。
成果
一時間と数分で1から6までの六問を解いた。本選行きボーダーが5問らしいので、それには通過できた。(TAISA_が7問と主張していたので終了後は悲しい気持ちになっていたが、自分で調べると違っていた。)追加の一時間で7から9を考えたが、一問も解けなかった。10以降は人間向けでないらしいので、やらなかった。
頭が良くなりそうという感想を持った。
内容
1問目
x(1+y(1+z))=31みたいな問題。
簡単な枝刈りで解ける。
正解:2分
2問目
(100p+10q+r)^2が{2,3,5,7}からなる5桁の数になるものを列挙するような問題。
一の位に注目すると、必ず5であることが分かる。
小さい方から調べていくが、三桁×三桁はすぐ六桁に上がるので、4つくらい調べれば良い。
正解:6分
3問目
3×3のマスに1~9を入れて、隣接したものの差が3以下になるようにする方法を数え上げる問題。
条件がかなり厳しいので、中心の値を決め打ってパズルをすると解ける。
正解:17分
4問目
五角形の中で遊ぶ問題。
愚直に相似を取ると解ける。
正解:9分
5問目
n=97*a+32=100*b+33=103*c+34なる最小の自然数nを求める問題。
愚直にユークリッド互除法で解いた。
32*3+1=97、33*3+1=100、34*3+1=103を使うと楽に解けるらしい。
正解:10分
6問目
120角形の頂点集合であって、頂角が18度の二等辺三角形がないようなものの最大のサイズを求める問題。
円と三角形の何かしらの公式を使って、中心からの角度が36度であると言い換える。
角度に注目すると、頂点のindexのmod6で独立なので、分けて考える。
すると、20個の頂点の中から(2,9,9)が生まれないように選ぶ問題になる。
偶奇で何かすることを考えると、奇数のindexのものを180度回転させることで、「三連続で頂点を選ばない」という制約に言い換えられる。
この制約なら、貪欲に取っていけば良い。
正解:19分
AtCoderに出そうだと思った。
7問目
整数2次多項式P,Q,Rに対して、P(1)=P(2)=Q(3)=0かつすべての係数の最大公約数は1であるようなとき、R(x)(^2=P(x)^2+Q(x)^2)を列挙する問題。
x^4の項や定数項に注目してみるが、何も得られない。
虚無:23分
未確認
P(x)^2=(R(x)+Q(x))-(R(x)-Q(x))と変形すると良いらしい。
8問目
内心の問題。
内心外心の問題は普通の模試の問題すら解けないため、何もできない。
虚無:4分
未確認
9問目
4×4のグリッドを4色で配色して、すべての行・列について色が{1,1,1,1}か{4,0,0,0}か{2,2,0,0}になるようなものを数え上げる問題。
KmCodeが「9問目は競プロ!」と言っていたので考えた。
{4,0,0,0}がある場合は簡単に数えられる。
すべて{1,1,1,1}である場合は気合で数えた。
{2,2,0,0}の個数で場合分けしようとするが、綺麗に分かれなかった。
数オリ特有のテクニックでもあるのではと思って諦める。
虚無:18分
確認済み
色を{0,1,2,3}としたとき、各行、列でxorがゼロになっていることが必要十分で、これはちょうど左上の 3×3のマスを自由に当てはめ、それ以外を自動的に埋めることで対応できる。言葉で表されている制約・条件を結合律・交換律のある演算で表現すると良いらしい。