vector<vector<int>>v;
2차원 vector의 선언은 일반적인 vector의 형식과 동일하게 vector안에 vector 자료형을 담는다는 느낌으로 이렇게 선언한다.
vector<vector<int>>v(5,vector<int>(5))//5 x 5 벡터이다
이렇게 vector<vector> v (행 크기, vector(열 크기)) 이렇게 넣어주면 된다.
vector<vector<int>> v(5,vector<int>(5,3))//5x5 벡터가 3으로 다 초기화된다
연속으로 주어진 수에 대해 구간 나머지 합 구하기
#include<iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
cin >> N >> M;
long answer = 0;
long S[1000001] = { 0 };//합 배열
long C[1000001] = { 0 };//같은 나머지 갖는 인덱스 카운트 배열
for (int i = 1; i <=N; i++) {
int temp;
cin >> temp;
S[i] = S[i - 1] + temp;
}
for (int i = 0; i < N; i++) {//합배열에 M으로 나눗셈 연산하기
int remainder = S[i] % M;//합배열을 M으로 나눈 나머지 값
if (remainder == 0) {
answer++;
}
C[remainder]++;
}
for (int i = 0; i < N; i++) {
if (C[i] > 1) {
//나머지가 같은 인덱스 중 2개 뽑는 경우의 수 더하기
answer = answer + (C[i] * (C[i] - 1) / 2);
//C[i]개 중에 2개를 뽑는 경우의 수 계산 공식: C[i] * (C[i] - 1) / 2
}
}
cout << answer << "\n";
}