コンテストURL: https://yukicoder.me/contests/411
yukicoderで二度目のコンテスト開催です。C問題の誘導問題としてA問題を位置づけることで普段★2問題が解きにくい人でも手がつけられるように配慮しました。また前回と違って難易度が高い問題も加わったため、より広い層に楽しんでもらえればと思ったのですが……結果的に難読さが目立ってしまったのが反省点です。
それでも問題文の厳密さと読みやすさの両立に関してコンテスト後に色々とご指導をいただけて嬉しかったです。参加者の皆様、testerの皆様、そしてご指導いただいた皆様にこの場を借りてお礼申し上げます。
A: No.2117 中国剰余定理入門 ★ | ||
---|---|---|
問題リンク:https://yukicoder.me/problems/no/2117 tester:遭難者さん | ||
C問題の誘導問題です。なおC問題でカッコの使い方が競技プログラミングではあまり見ないもので難読に感じたと参加者にご連絡をいただきました。A問題も同様のカッコの使い方をしていたため、慣れていない人には読みにくかったかもしれません。誠に申し訳ありませんでした。 ちなみに$p$進が整数論で非常に強力であることの1つの理由が中国剰余定理です。これを機に中国剰余定理を習得し、整数の問題を$p$進に帰着して解く足掛かりにしていただければと思います。 |
B: No.2118 遺伝的有限集合の数え上げ ★☆ | ||
---|---|---|
問題リンク:https://yukicoder.me/problems/no/2118 tester:MasKoaTSさん | ||
E問題の誘導問題であり、再帰の練習問題です。$p$進法は数の表記方法に過ぎませんが、遺伝的有限集合を始めとする他の概念の表記方法と併用することでその概念の列挙を行えることは$p$進法の典型的な応用の1つです。このことを実感してもらうことを目指して出題しました。 |
C: No.2119 一般化百五減算 ★★ | ||
---|---|---|
問題リンク:https://yukicoder.me/problems/no/2119 tester:遭難者さん | ||
合同式の個数を$2$個に絞った上で中国剰余定理を考えるA問題の制約違いとなる問題です。A問題は愚直な全探索で解け、A問題が解けるとA問題の解説が読めるのでそこで全探索より効率的で構成的なアルゴリズムを理解することができ、それを反復して用いることで本問に挑戦していただくことを意図して出題しました。 もちろんただ反復するだけではオーバーフローしたりするので、それ以上の非自明な考察が必要です。その辺の学習も込めて良い練習問題になれば幸い……と思っていたのですが想定解で解いた人はそこまで多くなかったかもしれません。有名問題である以上既存のライブラリを少し調整することでも解けることはtesterさんから指摘されていましたし、A問題の解説で説明したような構成的アルゴリズムを使わずに調和数列による計算量解析で解けることを参加者たちの感想から知り逆に勉強させていただきました。 |
D: No.2120 場合の数の下8桁 ★★★☆ | ||
---|---|---|
問題リンク:https://yukicoder.me/problems/no/2120 tester:testestestさん | ||
場合の数の計算は競技プログラミングだと素数を法とすることが多いようでしたので、せっかくなら$p$進付値の有用性を知っていただくよい機会だと思って出題しました。 当初は素数を法とする計算を理解していれば$p$進付値を適用するだけで同様に処理できるのであまり難易度は高くないと思っていたのですが、testerさんに類題とそれらの難易度評価を教えていただき適切な難易度設定に修正することができました。 |
E: No.2121 帰属関係と充足可能性 ★★★☆ | ||
---|---|---|
問題リンク:https://yukicoder.me/problems/no/2121 tester:遭難者さん | ||
充足可能性の判定のための付値の列挙に$2$進法を応用してもらうことを想定して出題しました。 $p$進法は数の表記法に過ぎませんが、B問題で遺伝的有限集合を始めとする概念の表記方法と併用することでその概念が列挙できることを実感してもらった上で、遺伝的有限集合の特別な例であるフォン・ノイマン階層の有限切片にその列挙を応用してもらえれば、と思いましたがなかなかそう想定通りの解き方はしてもらえなかったようです。難読パズルに見えちゃいますよねえ。 ちなみに基礎論系の問題がどの程度競技プログラミングで出題されるものかをよく知らなかったため、当初はもっと低めの難易度をつけていたのですがtesterさんに極めて非典型であることをご指摘していただき適切な難易度設定に修正させていただきました。そんな難易度変遷もありtesterさんにはとてもご迷惑をおかけしてしまいました。。 |
F: No.2122 黄金比で擬似乱数生成 ★★★★ | ||
---|---|---|
問題リンク:https://yukicoder.me/problems/no/2122 tester:googol_S0さん、shino16さん | ||
二次無理数の冪乗が適切な条件のもとで非常に精度良く計算できるという知識を使って行列累乗に帰着させることを想定した問題です。あまり知識が要求される問題は良くないかもしれないと思いましたが、整数の有名ネタの1つであるため★4の高難易度帯を解く参加者ならば知ってる可能性が高いことを期待して出題しました。 この問題が好きな理由は、この問題が「フィボナッチ数列など整数の言葉だけで表せる簡単な概念でも実数や行列など整数より広い世界を見ることで整数のことが新たに理解できる」というよく知られた事実の典型例だからです。 ちなみにこの問題はyukicoderで初めて作成した2問の1つでとても思い入れがあります。当初は難易度も実行時間制限の決め方も分かっていなかったためtesterさん方に手取り足取り教えていただきました。 |