Atcoder ABC262 振り返り
A - World Cup【AC】
条件を満たすまで+1し続けます.4で割った余りが2が条件なので最大でも3ループで終わることが分かります.
Y = int(input()) while Y%4 != 2: Y += 1 print(Y)
B - Triangle (Easier)【AC】
隣接リストを作ります.辺が存在するかはinで確認します.N<100なのでinでも十分間に合います.
N, M = map(int, input().split()) node = {i+1:[] for i in range(N)} for _ in range(M): u, v = map(int, input().split()) node[u].append(v) node[v].append(u) ans = 0 for a in range(1, N-1): for b in range(a, N): for c in range(b, N+1): if a in node[b] and b in node[c] and c in node[a]: ans += 1 print(ans)
C - Min Max Pair【AC】
i==A[i]の時とそうでないときで処理が変わります.i==A[i]であるようなiの集合は,どの2つを持ってきてもminとmaxの条件を満たします.i
N = int(input()) A = [int(i)-1 for i in input().split()] cou = 0 ans = 0 for i in range(N): if i == A[i]: cou += 1 else: if i == A[A[i]] and i < A[i]: ans += 1 print(ans+(cou*(cou-1))//2)