MY MEMO

[BAEKJOON] 10986 나머지의 합 본문

ALGORITHM/BAEKJOON

[BAEKJOON] 10986 나머지의 합

l_j_yeon 2017. 10. 4. 03:35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, m;
    scanf("%d %d", &n, &m);
 
    vector<int>map(1000001);
    for (int x = 0; x < n; x++)
    {
        scanf("%d", &map[x]);
        map[x] %= m;
    }
 
    vector<long long>cnt(1001,0);
    int sum = 0;
 
    cnt[0] = 1;
    for (int x = 0; x < n; x++)
    {
        sum += map[x];
        sum %= m;
        cnt[sum] += 1;
    }
 
    long long answer = 0;
    for (int x = 0; x < m; x++)
        answer += (cnt[x] * (cnt[x] - 1)) / 2;
 
    printf("%lld", answer);
    return 0;
}


더해서 나머지가 같은 것들만 모아 놓는다


모아놓은 것 중에 2개를 골라서 빼면 나머지가 0인 합을 찾을 수 있다


그것은 nC2이기 때문에 마지막에 ((n)(n-1))/2 를 계산하는 것이다.


이 문제는 너무 어려웠다..

'ALGORITHM > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 11060 점프 점프  (0) 2017.10.04
[BAEKJOON] 9084 동전  (0) 2017.10.04
[BAEKJOON] 10971 외판원 순회  (0) 2017.10.03
[BAEKJOON] 2302 극장 좌석  (0) 2017.10.03
[BAEKJOON] 2631 줄세우기  (0) 2017.10.01
Comments