算法
(数论) $O(n)$
注意到
$$ A_i - A_j \equiv 0 \pmod {200} \Leftrightarrow A_i \equiv A_j \pmod {200} $$
所以只需要统计 $A_i \% 200$ 的余数所对应的贡献即可,然后对于同一余数,任取其中 $2$ 个加进答案。
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::vector;
using ll = long long;
int main() {
int n;
cin >> n;
vector<int> a(n);
rep(i, n) cin >> a[i];
vector<int> cnt(200);
rep(i, n) cnt[a[i] % 200]++;
ll ans = 0;
rep(i, 200) ans += (ll)cnt[i] * (cnt[i] - 1) / 2;
cout << ans << '\n';
return 0;
}