728x90
해결방법
- SUM(0 ~ i) % M의 개수를 받는다.
- 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 |
댓글