AtCoder Beginner Contest 131

はい。
https://atcoder.jp/contests/abc131
oooo-x 980(+25)でした。無駄にWAしてます。コピペミスです。

A - Security

PyPy3

s=input()
print("Bad" if s[0]==s[1] or s[1]==s[2] or s[2]==s[3] else "Good")

1-2、2-3、3-4文字目が同じである場合を判定しました。。

B - Bite Eating

PyPy3

n,l=map(int,input().split())
ans=0
chk=10000
for i in range(n):
    ans+=i+l
    if abs(chk)>abs(i+l):
        chk=i+l
print(ans-chk)

コンテスト中は問題文の意味が分かってませんでした。分かってませんでしたがリンゴの総和から絶対値が最も0に近いものを除いていたので問題ありませんでした。

C - Anti-Division

PyPy3

import fractions
def lcm(a,b): return a*b//fractions.gcd(a,b)
 
a,b,c,d=map(int,input().split())
a-=1
ans=b
t=lcm(c,d)
ans-=b//c-a//c
ans-=b//d-a//d
ans+=b//t-a//t
print(ans-a)

aは事前に-1しておきます。 b//c-a//c でa以上b以下の範囲のcで割り切れる数の個数を全体から引きます。同様にdで割り切れるものも計算して引きます。cで割りきれてdでも割り切れるものが2度引かれていることになるのでcとdの最小公倍数で割り切れるものを足します。 a以上b以下の範囲なのでaを引きます。解になります。多分。。

D - Megalomania

PyPy3

n=int(input())
d=[]
for i in range(n):
    a,b=map(int,input().split())
    d.append((b,a))
d.sort()
chk=0
for i in d:
    chk+=i[1]
    if chk>i[0]:
        print("No")
        exit()
print("Yes")   

締め切り時刻でソートして先頭から実施時間の加算をして締め切り時刻を超えるかどうか調べました。それが正しいかは証明はありませんでした。ですが同じ締め切り時刻では優先順位付ける必要ないとか、実施時間が軽くても重くても締め切り時刻の遅いものを優先する必要なさそうだなで証明はありませんが提出しました。