프로그래밍/백준(BOJ)
[백준(BOJ) / C++][Gold Ⅲ] 10986번 : 나머지 합
데굴데굴이
2024. 6. 16. 19:28
반응형
문제
https://www.acmicpc.net/problem/10986
풀이
해당 문제는 구간 합, 경우의 수를 알고있다면 풀 수 있는 문제 입니다.
소스코드
#include <iostream>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
cin >> N >> M;
vector<long> S(N, 0);
vector<long> C(M, 0);
long answer = 0;
cin >> S[0];
for(int i = 1; i < N; i++)
{
int temp = 0;
cin >> temp;
S[i] = S[i-1] + temp;
}
for(int i = 0; i < N; i++)
{
int remainder = S[i] % M;
if(remainder == 0)
{
answer++;
}
C[remainder]++;
}
for(int i = 0; i < M; i++)
{
if(C[i] > 1)
{
answer = answer + (C[i] * (C[i] - 1) / 2);
}
}
cout << answer << "\n";
}
반응형