AtCoder Beginner Contest 178

2020-09-13

コンテスト中に挑戦した問題についての感想とか.

私の解答

A - Not

問題

(logxor 0 1) ; => 1
(logxor 1 1) ; => 0

のことを忘れていたので, 入力が0かどうかを判定した.

B - Product Max

問題

最大値は端点のどこかであるので, 4通り試せば良い.

C - Ubiquity

問題

AからBを2回引くとCのぶんだけ引きすぎるので, Cを足すと答えが出る.

大きな数が出てくるので, 剰余の処理はうまく書いておく. (特に累乗について.)

D - Redistribution

問題

数列の全ての項が3以上なので, n項ある場合, (- s (* 3 n))が負になるnについては, そのような数列は存在しない.

以上のことから, 数列が存在する範囲のnは上限が決まるのでそれらについて考える.

全ての項から3を引くと, 全ての項は0以上の数となり, それらの総和は(- s (* 3 n))である.

なので, (- s (* 3 n))個のものの間に(- n 1)個の仕切りをどのように配置するかという問題になる. 仕切りは隣接していても良いことを考えると, (- s (* 2 n) 1)個のものから(- n 1)個のものを選ぶ組み合わせの数になる.

この際に階乗を計算するが, これは事前に計算しておくと良い.

E - Dist Max

問題

WIP

F - Contract

問題

WIP