AtCoder ABC131
概要
AtCoderの記録です。全部Pythonで頑張ります。
E,Fは解いてないです。
この記事の対象
本編
AtCoderとは
競技プログラミングコンテストを開催している会社です。 atcoder.jp
ABC131
友達の家でボドゲをしている合間に参戦です。
A Security
4桁しかないのであり得るパターンを全部考えて条件分岐しました。
s = input() if s[0] == s[1] or s[1] == s[2] or s[2] == s[3]: print('Bad') else: print('Good')
B Bite Eating
あれこれ方法を考えて時間を無駄にしましたが、結局味の絶対値が1番小さいものを食べたときがスコアへの影響が最小です。
N,L = map(int,input().split()) val = [] for i in range(N): val.append(L+i) s = sum(val) small = 10000 for i in val: if abs(i) < small: small = abs(i) memo = i if memo < 0: print(s+small) else: print(s-small)
C Anti-Division
中学生くらいの数学の問題。実装はfractions.gcd()を使ったら簡単です。
import fractions A,B,C,D = map(int,input().split()) def ans(v1,v2,v3): return v1-v1//v2-v1//v3+v1//(v2*v3//fractions.gcd(v2,v3)) print(int(ans(B,C,D)-ans(A-1,C,D)))
D Megalomania
期限時刻の早い順にこなしていくのが最善です。
import numpy as np N = int(input()) memo = np.zeros([N,2]) for i in range(N): A,B = map(int,input().split()) memo[i][0] = A memo[i][1] = B memo = memo[np.argsort(memo[:,1])] #print(memo) flag = True s = 0 for i in range(N): s += memo[i,0] if memo[i,1]-s<0: flag = False break if flag: print('Yes') else: print('No')
まとめ
今回はCで1回WAを出した以外はストレートで通せました。Dが一発で通せたのは初めてな気がするので嬉しいです。 また次回。