問題概要
問題ページ
-
A - Very Very Primitive Game
問題ページへ移動する
問題文
高橋くんと青木くんがゲームを行います。
はじめ、高橋くんは \(A\) 個、青木くんは \(B\) 個のアメを持っています。
\(C=0\) ならば高橋くんが先手、\(C=1\) ならば青木くんが先手で、高橋くんと青木くんは以下の操作を交互に繰り返します。
- 自分の持っているアメを \(1\) 個食べる。
先に操作を行えなくなった者の負けです。どちらが勝つでしょうか?
制約
- 入力は全て整数
- \(0 ≤ A, B ≤ 100\)
- \(C \in \{0, 1\}\)
問題の考察
A問題にしては少し面倒な問題。
for文で愚直に処理した方が直感的にコーディングできる印象。
for文で解答する
- forをcからスタート
- iの値が偶数ならa(高橋君の値)を-1
- iの値が奇数ならb(青木君の値)を-1
- aが0未満なら青木君の勝利
- bが0未満なら高橋君の勝利
if文で場合分けする時に、aとbの値が異なる場合には値が大きい方が勝利します。
a == bの場合のみ、cの値によって勝敗の結果が変わるので次のような場合分けになります。
if文で場合分け
- a > bの場合
- 高橋君の勝利
- a < bの場合
- 青木君の勝利
- a == bの場合
- c == 0の場合
- 青木君の勝利
- c == 1の場合
- 高橋君の勝利
- c == 0の場合
たびすけ
コーディング量もそこまで変わらないので提出はfor文でしました!!
ACコード
for文で解答
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
a, b, c = list(map(int, input().rstrip('\n').split()))
for i in range(c, 10 ** 5):
if i % 2 == 0:
a -= 1
if a < 0:
print("Aoki")
exit()
else:
b -= 1
if b < 0:
print("Takahashi")
exit()
if __name__ == '__main__':
solve()
if文で場合分け
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
a, b, c = list(map(int, input().rstrip('\n').split()))
if a > b:
print("Takahashi")
elif a < b:
print("Aoki")
else:
if c == 0:
print("Aoki")
else:
print("Takahashi")
if __name__ == '__main__':
solve()