AtCoder Beginner Contest 071/AtCoder Regular Contest 081
はい。
https://atcoder.jp/contests/abc071
A - Meal Delivery
Python3
x,a,b=map(int,input().split()) print("A" if abs(x-a)<=abs(x-b) else "B")
x-aとx-bを比較。
B - Not Found
Python3
s=input() ans="" for i in range(97,123): ans+=chr(i) for i in s: ans=ans.replace(i,"") print(ans[0] if len(ans) else "None")
a-zの文字列を持っておいて、入力の文字列を先頭から読んでreplaceで消していく。残りの先頭か残りなしが解。 a-zの文字列を97,123で作ったけども、ord(a)とかで作ってる人がいらしたのでそっちのほうが楽だなー、と思ったので次回以降そうしようと思いました。
C - Make a Rectangle
Python3
n=int(input()) a=[int(i) for i in input().split()] a.sort() d={} chk=0 for i in a[::-1]: if i in d: d[i]+=1 else: d[i]=1 if d[i]==4: print(i*i) exit() if d[i]==2 and chk==1: for j in d: if i!=j and d[j]>=2: print(i*j) exit() elif d[i]==2: chk=1 print(0)
ソートして大きい方から見て同じ数が4個か、2個2個出現したらその積が解。
D - Coloring Dominoes
PyPy3
mod=1000000007 n=int(input()) s=input() d=[0] for i in range(1,n): if s[i-1]==s[i]: d[-1]+=1 else: d.append(0) ans=[3,6][d[0]] for i in range(1,len(d)): if d[i-1]==d[i]==1: t=3 elif d[i-1]==1: t=1 else: t=2 ans=(ans*t)%mod print(ans)
ドミノの2行目、入力のS2は使わないので無視してます。おそらくは1行目でドミノが縦か横かを判別できれば解が出ます。公式解説おすすめです。公式解説がいいです。
左から順番に見ていって縦なら0、横なら1という感じで事前準備でリスト作成します。縦横調べ終わったら塗り方が何通りであるかを計算します。
初期は一番左が縦なら3通り、横なら6通りで数え始めます。2番目以降のドミノはi-1番目とi番目次第で計算が異なります。 横横だと×3通り、横縦だと×1通り、それ以外は×2通りしてmodを取りながら右端まで見ると解になります。多分。