AtCoder Beginner Contest 159
はい。
https://atcoder.jp/contests/abc159
A - The Number of Even Pairs
PyPy3
n,m=map(int,input().split()) print(n*(n-1)//2+m*(m-1)//2)
2つ選んで和が偶数なので偶数と偶数、奇数と奇数のペアの時だけ。どちらかの個数が0個のことがあっても 0*(0-1)
は0なので特に何も対策する必要はないはずです。
B - String Palindrome
PyPy3
s=input() x=len(s) l=s[0:(x-1)//2] r=s[(x+3)//2-1:] print("Yes" if s==s[::-1] and l==l[::-1] and r==r[::-1] else "No")
よくわからないので全体と前半、後半の全てで回文になっているかを確認しました。
C - Maximum Volume
PyPy3
l=int(input()) print(((l/3)**2)*((l*1.0)-((l/3)*2)))
3辺の和が特定の値で直方体の体積を最大に〜だと立方体にするしかないと思います。証明はありません。
D - Banned K
PyPy3
n=int(input()) a=[int(i) for i in input().split()] d={} for i in a: if i in d: d[i]+=1 else: d[i]=1 ans=0 for i in d: ans+=d[i]*(d[i]-1)//2 for i in a: print(ans-(d[i]*(d[i]-1))//2+((d[i]-1)*(d[i]-2)//2))
それぞれの数が何個あるか調べる、2つ選ぶ方法を数えて全部足す。数列Aを先頭から見てちょっと再計算する。
総和から該当の数の選ぶ方法を引いた後に、1個減らした場合の選ぶ方法を足しました。
E問題はあとで