[AtCoder] ABC 200 C – Ringo’s Favorite Numbers 2

問題

方針

整数 \( x, y \) について \( x -y \) が \( 200 \) の倍数であるとき,\( x \bmod 200 = y \bmod 200 \) が成立します.したがって,\( A_i \bmod 200 \) の累積和を計算すれば良いです.

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    int N;
    cin >> N;
    int A;
    ll B[200]= {0};
    for (int i = 0; i < N; i++) {
        cin >> A;
        B[A % 200]++;
    }
    ll ans = 0;
    for (int i = 0; i < 200; i++) {
        ans += (B[i] * (B[i] - 1)) / 2;
    }
    cout << ans << "\n";
    return 0;
}