AtCoder Beginner Contest 200 C - Ringo's Favorite Numbers 2
コード
N=int(input()) a=list(map(int,input().split())) mod=200 b=[i%200 for i in a] from collections import defaultdict di=defaultdict(int) for i in b: di[i]+=1 result=0 for i in range(200): n=di[i] result+=n*(n-1)//2 print(result)
考え方
200で割ったあまりで分類する。
a-bが200で割り切れるということはa≡b(mod200)であるから、数列anの中から200で割ったものの等しいものの集まりが何個あるか数えればいい。
例えば200で割ったあまりが2のものが3個なら3C2=n(n-1)/2をすればよく、それをすべて加算すればよい。