AtCoder Beginner Contest 103
はい。
https://atcoder.jp/contests/abc103
A - Task Scheduling Problem
Python3
a=[int(i) for i in input().split()] ans=100000 for i in range(3): for j in range(3): for k in range(3): if i==j or i==k or j==k: continue ans=min(ans,abs(a[i]-a[j])+abs(a[j]-a[k])) print(ans)
全部調べる。
B - String Rotation
Python3
a=input() b=input() for i in range(101): if a==b: print("Yes") exit() a=a[-1]+a[0:-1] print("No")
全部調べる。
C - Modulo Summation
def gcd(a,b): return a if b==0 else gcd(b,a%b) def lcm(a,b): return a*b//gcd(a,b) n=int(input()) a=[int(i) for i in input().split()] tmp=a[0] ans=chk=0 for i in range(1,n): tmp=lcm(tmp,a[i]) if n%2!=0: tmp=lcm(tmp,a[-1]) y=tmp-1 p=0 for i in a: p+=y%i print(p)
覚えてない。最小公倍数-1を解にしてるっぽい。
D - Islands War
Python3
n,m=map(int,input().split()) w=[] for i in range(m): a,b=map(int,input().split()) w.append((a,b)) w.sort(reverse=True) d=[] for i in range(m): a,b=w.pop() if i==0: d.append([a,b]) else: if d[-1][1]<=a: d.append([a,b]) elif d[-1][1]>b: d[-1][1]=b print(len(d))
a,bを全部受け取ってからソートする。順に取り出していくとaがより小さい数が出現しないことが保証されるはず。bの座標次第で重複している区間があるかを調べる。重複があれば最も狭い区間になるよう調整する。重複がなければ新たに比較候補としてまた重複区間を探して重複区間を全て消すと解になるはず