AtCoder Beginner Contest

【pythonでABC210を解説】B - Bouzu Mekuri

問題概要

問題ページ

問題文

\(N\) 枚のカードからなる山札があります。
それぞれのカードは、「良いカード」か「悪いカード」かのどちらかです。

高橋君と青木君は、この山札を使って対戦ゲームをします。
このゲームでは、\(2\) 人は交互に山札の一番上のカードを引いて、そのカードを食べます。
先に悪いカードを食べたプレイヤーの負けです。(ここで、山札には少なくとも \(1\) 枚の悪いカードが含まれていることが保証されます。)

01 からなる文字列 \(S\) が与えられます。\(i = 1, 2, \ldots, N\) について、

  • \(S\) の \(i\) 文字目が 0 のとき、山札の上から \(i\) 番目のカードが良いカードであることを表します。
  • \(S\) の \(i\) 文字目が 1 のとき、山札の上から \(i\) 番目のカードが悪いカードであることを表します。

高橋君が先手でゲームを始めるとき、高橋君と青木君のどちらが負けるかを答えてください。

制約

  • \(1 \leq N \leq 10^5\)
  • \(N\) は整数
  • \(S\) は 01 からなる長さ \(N\) の文字列
  • \(S\) は少なくとも \(1\) 個の 1 を含む。

問題の考察

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    n = int(input().rstrip('\n'))
    s = str(input().rstrip('\n'))
    for i, v in enumerate(s):
        if v == "1":
            if i % 2 == 0:
                print("Takahashi")
            else:
                print("Aoki")
            exit()


if __name__ == '__main__':
    solve()

プログラミング

-AtCoder Beginner Contest
-