競プロきっかけで「マスターオブ整数」を解いた感想

整数のことが好きになる魔法の本があります

こんにちは,えおえおです.みなさんは整数のことが好きですか?私は好きです.というより,「マスターオブ整数」を読んで好きになりました.

さて,この記事では,マスターオブ整数に対する私の愛を書きます.思いつくままに書いているので読みにくいと思いますが許してください.

まず経緯としては,競技プログラミングAtCoder)に取り組む中で整数を勉強する必要性を感じました.そこで,マスターオブ整数の第1部(およそ100問)を解き,第2部を半分くらい読みました.マスターオブ整数とはこちらの書籍のことです.

ts-webstore.

結論から申し上げると,整数問題を解く面白さを感じられる素晴らしい参考書でした.しかし,AtCoderのレーティングを上げる特効薬ではない,と感じています.

 

マスターオブ整数に対する愛を語らせてください

マスターオブ整数の好きなところを列挙します.

整数と仲良くなれます

まず,マスターオブ整数を読んで一番最初に感動したのは倍数の周期性を用いる解法を読んだ時です.今までは,3で割って1余る数,と聞いたときには,整数kを用いて3k + 1 か,などと式でしか整数をとらえていませんでした.しかし!今では頭の中で,xoxxoxxoxxoxxox...という列が頭の中に浮かびます.(整数が0から順番に並んでいて3で割って1あまる数がoです.)このように頭の中で整数が並んでいる景色が見えるようになります!これに関係して,競プロで頻出する整数のあまりに関するmod演算にも習熟できます.さらに,あまりに習熟してユークリッドの互除法を見る景色も変わりました.あと,おまけに倍数の判定法を学んで素因数分解が速くなりました.書ききれませんが他にも沢山いいことがありました.

問題の題材や解法が面白いです

例えば短文の問題だと次のものがお気に入りです.解法に気が付いた瞬間がとても気持ち良いです.

1 + 3 + 5 + ... + (2n - 1) = n^2 であることを用いてピタゴラス数を三組以上求めよ. (マスターオブ整数,p19,§14-3)

3つの奇数 a, b, c に対して,a^2 + b^2 + c^2 は平方数とはならないことを示せ.(マスターオブ整数,p20,§15-5)

特に下みたいな問題は以前は嫌いだったのですが,今では整数の問題も好きになりました.生きていく中で一つでも好きなものが増えて良かったなと思いました.

思考力が身につきます

整数に関わらない問題に取り組む姿勢を今一度学べます.小さなnで実験をして規則性を見つける,必要条件と十分条件を考える,数式を変形して性質を探る,最後はしらみつぶしにしてやるぞという姿勢,などなど...これらの力は競技プログラミングにも活かすことができるはずです.

整数問題が待ち遠しくなります

今までは競プロのコンテストで整数問題は来るな来るな,と思っていたのですが気が付いていたら整数問題を渇望している自分がいました.実はまだ整数問題が解けた成果は得られていないのですが,現時点では整数問題が出ても楽しく復習できています.復習するときの理解度も上がっている気がします.何より,コンテストをより一層楽しむことができます.

 

マスターオブ整数に期待しない方がいいこと

良いことばかり書きましたが,マスターオブ整数に多くを求めてはいけませんでした.

競技プログラミングに最適化されていない

問題を解く中で,「あ,これ競プロでやったやつだ」となったことは何度もありました.しかし逆に,これは競プロでは出ないな~という知識もたくさんあります(全列挙してすぐに見つかってしまうものなど.)競プロの精進方法としてはコストパフォーマンスが悪いと言わざるを得ません.解き切っても,ほとんどレーティングは上がらないと思います.

最初は競プロのために始めて,途中であれこれは精進方法として効率は良くないな,と薄々感じていたのですが,面白くて100問解けました.

例えば半年でできるだけレーティングを上げようと思っている方にはおすすめできないと思います.私は一年以上の長い時間をかけて強くなることを考えているのでやってよかったかな,と思っています.

整数について始めから学ぶのには適していない

最初の一問目からかなり難しいです.

私はマスターオブ整数に取り組む前に,アルゴ式の「論理的思考力を鍛える練習問題集」(以下のリンクの【補充】の部分です)を解きました.

整数論的アルゴリズム | アルゴ式

各問題の回答で必要条件と十分条件について丁寧に書かれており,論理的に考える(必要性と十分性を考える)良い練習になりました.難易度はマスターオブ整数よりも控えめだった記憶があるので,まずはこちらから解くのがいいかもしれません.

 

マスターオブ整数を買ってね

結論としては,競プロの精進方法としては微妙かもしれないけど,それ自身がとっても面白い問題集です.おすすめなのでぜひ買ってみてください.別解とかお話ししましょう.