AtCoder-ABC190 A - Very Very Primitive Game / B - Magic 3【Python解答例】
AtCoder Beginner Contest190に参加してD問題を解くことができず3完でした。
くやしいのでD問題まで復習していきたいと思います。
この記事ではA問題とB問題を記事にしていきます。
AtCoder Beginner Contest 190 - AtCoder
AtCoder Beginner Contest190 A - Very Very Primitive Game
問題文
高橋くんと青木くんがゲームを行います。
はじめ、高橋くんは A 個、青木くんは B 個のアメを持っています。
C=0 ならば高橋くんが先手、C=1 ならば青木くんが先手で、高橋くんと青木くんは以下の操作を交互に繰り返します。
自分の持っているアメを 1 個食べる。
先に操作を行えなくなった者の負けです。どちらが勝つでしょうか?
制約
・入力は全て整数
・0≤A,B≤100
・C∈{0,1}
解答例
a, b, c = map(int,input().split()) if c == 0 and a - b >= 1: print("Takahashi") elif c == 1 and a - b >= 0: print("Takahashi") else: print("Aoki")
解説
高橋くんと青木くんがそれぞれ持っているアメを順番にひとつづつ食べていきます。
先にアメがなくなったほうが負けで、勝った人の名前を答える問題です。
高橋くんが勝つ条件を考えていきました。
どちらが先にアメを食べるかによって2つの場合分けをしています。
C=0のときは高橋くんが先にアメを食べますので、青木くんより1つ以上多く持っていれば高橋くんが勝ちます。
C=1で青木くんが先行のときは、青木くんと同じ数以上アメを持っていれば、高橋くんが勝ちます。
それ以外の条件のときは青木くんが勝ちますので、問題の条件にあわせて勝った人を出力すればOKでした。
AtCoder Beginner Contest190 B - Magic 3
問題文
魔法使いの高橋君は魔物と戦っています。
高橋君は N 種類の呪文を使うことができます。 i 番目の呪文は詠唱に Xi 秒かかり、威力は Yi です。
ただし、この魔物は強いので、詠唱に S 秒以上かかる呪文や、威力が D 以下の呪文ではダメージを与えられません。 また、呪文以外の方法でダメージを与えることもできません。
高橋君は魔物にダメージを与えられるでしょうか?
制約
・入力は全て整数
・1≤N≤100
・1≤Xi≤10^9
・1≤Yi≤10^9
・1≤S≤10^9
・1≤D≤10^9
解答例
n, s, d = map(int,input().split()) X = [] Y = [] for i in range(n): x, y = map(int,input().split()) X.append(x) Y.append(y) for i in range(n): if X[i] < s and Y[i] > d: print("Yes") break else: print("No")
解説
高橋君はそれぞれ詠唱時間と威力が決まっている N 種類の呪文を使うことができます。
このなかに詠唱が S 秒より短く、威力が Dより大きい呪文があるか答える問題です。
呪文の種類は最大100までなので、ひとつひとつ条件と照らしあわせて確認していきます。
ループ内で詠唱時間sより短く、威力がdより大きい呪文があればYesを出力します。
該当がないままループを抜けたらNoを出力すればACでした。
前回のABC189ではB問題が解けずに心おられましたが、今回は無事にACできました。
C問題の内容も記事にしていきたいと思います。
ABC190の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com