Toy と帽子と ADP BE

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

モノグサプログラミングコンテスト2022(AtCoder Beginner Contest 238)

4完2WA。

各問題

A - Exponential or Quadratic

n=2, 3, 4では2nの方が小さいですが、2nが指数関数ですぐ爆発するのでnが5以上では常に2nの方が大きくなります。

ところで、n=1のときは21=2と1*1=1なので2nの方が大きいです。

見事に引っかかり1WAと、慌てて条件を追加したためandとorを間違えてさらに1WA・・・。ここでペナ込み18分を費やしています。大ピンチ。

(追記:よく見たらBを先に通していたのでそれほどでもなかった・・・)

B - Pizza

0、360およびA_i%360を昇順にならべると、隣接する項の差分が欲しい角度なので、全部チェックすればよいです。

C - digitnum

1桁の合計はf(1)=1からf(9)=9までの和、2桁の合計はf(10)=1からf(99)=90までの和、3桁の合計はf(100)=1からf(999)=900までの和、という具合になってます。

最上位の桁以外は上記の計算をして、最上位の桁はいくつあるか計算(例えば例2の238なら238-99で139個ある)して、そこまでの和を求めればよいです。

D - AND and SUM

まず、ANDを作るためにはaで立っているビットがx, yともに立っている必要があるため、少なくとも和はa2以上です。s < a2ならこの時点で"No"とわかります。

s >= a*2の場合、残りのs - a*2で立っているビットを、xかyの「いずれか片方」に振り分ける必要があります。両方に振ってしまうとANDが変わるのでだめですし、振り分けない場合sが作れなくなるのでそれもだめです。

ここで、s - a*2で立っているビットがすでにaで立っていた場合、振り分けられないので"No"です。すべてを振り分けることができれば"Yes"です。

E - Range Sums

そもそもどういう条件でうまく行くのかが証明できずじまいで、適当に再帰を書いて投げるももちろんだめでした。

まとめ

A問題でめちゃくちゃはまってしまい、今日はもうだめかと思いましたが、C、Dでかなり挽回できたようでなんとか水パフォ中位をキープとなりました。

f:id:mdstoy:20220205230438p:plain