CodeQUEEN 2023 予選 (AtCoder Beginner Contest 308)の解説記事です。
ABC308 A – New Scheme
問題
問題文の要約は以下の通りです。
問題の要約
8個の整数 \(S_{1}\), \(S_{2}\), \(\cdots\), \(S_{8}\) を与えたとき、以下の3つの条件がすべて満たされているならば Yes
を、そうでないならば No
を出力せよ。
・\(S_{1} \le S_{2} \le \cdots \le S_{8}\)
・\(S_{1}\), \(S_{2}\), \(\cdots\), \(S_{8}\) はすべて100以上675以下である。
・\(S_{1}\), \(S_{2}\), \(\cdots\), \(S_{8}\) はすべて25の倍数である。
制約
・\(1 \le S_{i} \le 1000\)
・入力は全て整数
入力
\(S_{1}\) \(S_{2}\) \(\cdots\) \(S_{8}\)
出力
答えを出力せよ。
解説
3つの条件を順番に判定する。
解説
まず入力 \(S\) をlist
として受け取ります。
S=list(map(int,input().split()))
\(S\) の大小を比べるために \(S_{i-1}\) の値を格納しておくための変数を用意します。
\(1 \le S_{i}\) なので初期値は0
としておきます。
tmp=0
3つの条件をすべて満足したときは、tmp
に \(S_{i}\) を格納し、どれか一つでも満たさないときはNo
を出力し終了します。
全ての \(S\) が条件を満たしたとき、Yes
を出力します。
for i in range(8):
if tmp<=S[i] and 100<=S[i]<=675 and S[i]%25==0:
tmp=S[i]
else:
print('No')
exit()
print('Yes')
解答
S=list(map(int,input().split()))
tmp=0
for i in range(8):
if tmp<=S[i] and 100<=S[i]<=675 and S[i]%25==0:
tmp=S[i]
else:
print('No')
exit()
print('Yes')
ABC308 B – Default Price
問題
解説
\(C_{i}\) の皿の色が\(D_{1}\), \(\cdots\), \(D_{M}\) の中にあるか判定し、なければ \(P_{0}\) 円となるように処理する。
解説
まず入力を受け取ります。
n,m=map(int,input().split())
c=list(input().split())
d=list(input().split())
p=list(map(int,input().split()))
出力する解答の初期値を0
とします。
ans=0
flag=False
と置いておき、\(C_{i}\) の皿の色が \(D_{1}\), \(\cdots\), \(D_{M}\) の中にあればans
に \(P_{i+1}\) を足し、flag=True
とします。flag=False
の時は、すべての色と異なっているので、ans
に \(P_{0}\) を足します。
for i in range(n):
flag=False
for j in range(m):
if c[i]==d[j]:
ans+=p[j+1]
flag=True
if not(flag):
ans+=p[0]
最後に結果を出力します。
print(ans)
解答
n,m=map(int,input().split())
c=list(input().split())
d=list(input().split())
p=list(map(int,input().split()))
ans=0
for i in range(n):
flag=False
for j in range(m):
if c[i]==d[j]:
ans+=p[j+1]
flag=True
if not(flag):
ans+=p[0]
print(ans)