Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder - 第二回日本最強プログラマー学生選手権

4完。

数学(算数)ができなくてパフォが伸びないいつものパターンのやつ・・・。

各問題

A - Competition

これはまあ算数の問題で、XAがYZ以上にならないような最大のAが答えです。

Aから手応えありすぎませんか?(←算数が苦手なだけ

B - Xor of Sequences

vectorなりmapなりを使って出現数を管理して1のもののみを答えます。

C - Max GCD 2

AからBまでの全ての数の約数を列挙して、それぞれの約数の出現数を数えます。

複数登場した約数は、複数の数が約数に持つ→それらの数の公約数となる→最大公約数の候補となる、ということで複数登場した約数のうちで最大のものが答えです。

D - Nowhere P

まずA_1は全ての数が候補になりえます。P-1個あります。

A_2については

  • A_1=1のとき、P-1以外は使える
  • A_1=2のとき、P-2以外は使える
  • A_1=3のとき、P-3以外は使える
  • ...
  • A_1=P-2のとき、2以外は使える
  • A_1=P-1のとき、1以外は使える

という具合にそれぞれのA_1に対してP-2個の数が候補になりえます。ここでA_1 + A_2をPで割ったあまりは1からP-1の範囲を取るので、i=2から3に移る場合もそれぞれのA_1+A_2に対してP-2個の数が候補になりえます。以降同様の議論の繰り返しです。

というわけで、 (P - 1) * (P - 2)^(N - 1)が答えとなります。

答えを思いついてしまえばなんてことはないのですが、例によって算数がだめすぎて時間を掛けすぎてしまったのは反省です。

E - Level K Palindrome

L1となり得る部分の特定(と、"impossible"になる条件の特定)は多分できたと思うのですが、L1の部分を条件を満たす回文にするうまい方法がさっぱりわからず・・・。

まとめ

算数ができないことも含めて実力どおりの結果、パフォって感じでした。

しかし実質Dが早く解けたかどうかで青中位から緑下位まで分かれちゃうの相変わらず怖いですね・・・。

f:id:mdstoy:20210417200536p:plain