본문 바로가기
Algorithm/BOJ

나머지 합 - 10986번

by y.j 2019. 5. 19.
728x90

해결방법

  1. SUM(0 ~ i) % M의 개수를 받는다.
  2. i <= k <= j (단, i <= j , j < M) 까지 2개를 선택하는 경우의 수를 더해준다.

소스코드

#include<iostream>
using namespace std;
typedef long long ll;
ll num[1000001], N, M;
int main() {
    ll sum = 0, a;
    cin >> N >> M;
    while(N--) {
        cin >> a;
        sum += a;
        num[sum % M]++;
    }
    ll ans = num[0];
    for (int i = 0; i < M; ++i)
        ans += (num[i] * (num[i] - 1)) / 2;
    cout << ans;
    return 0;
}
728x90

'Algorithm > BOJ' 카테고리의 다른 글

최소값 찾기 - 11003번  (0) 2019.05.19
탑 - 2493번  (0) 2019.05.19
1931번 - 회의실 배정  (0) 2019.05.05
6549번 - 히스토그램에서 가장 큰 직사각형  (0) 2019.05.02
동전0 - 11047번  (0) 2019.04.29

댓글