AtCoder Beginner Contest 027 : A B C

abc027.contest.atcoder.jp

むずかしめに感じた

A

int cnt[11]のような配列を用意して
cnt[ni()]++とする。

したら配列に入っている奇数のときの
インデックスが答え

Submission #960459 - AtCoder Beginner Contest 027 | AtCoder

B

島の合計人数がsなら、
1つの島にはs / n人いなきゃいけないことになる。
島の人数をm個足していって、
sum a / m = s / n
になったときに橋をかければいい。
もちろん余りが出てはいけないので、
ちゃんとチェックすること

Submission #960458 - AtCoder Beginner Contest 027 | AtCoder

C

ゲーム系。紙に書いて、どういうときに勝ち確定になるか
そのときどのくらいの長さが続くか考えてみる。

すると、便宜上 m = n + 1 で勝ち確定として
(nを超えた数が手番に回ってきた -> 勝ち)、

  • 勝ち確定なら -> m = m / 2 切り上げで負け確定に遷移
  • 負け確定なら -> m = (m - 1) / 2 切り上げで勝ち確定に遷移

としていくと最後m = 1になったとき、
勝ち確定か負け確定かが分かる。

負けなら2xをとっても負けてしまい、
勝てるなら2x + 1も選択するから
勝ち確定の一番小さい数までの距離は
負け確定の一番小さい数までの距離より長い

うまい説明があるといいんだけどなあ・・・

C: 倍々ゲーム - AtCoder Beginner Contest 027 | AtCoder