반응형
문제
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";
}
반응형
'프로그래밍 > 백준(BOJ)' 카테고리의 다른 글
[백준(BOJ) / C++][Silver Ⅳ] 1940번 : 주몽 (0) | 2024.06.17 |
---|---|
[백준(BOJ) / C++][Silver Ⅴ] 2018번 : 수들의 합 5 (0) | 2024.06.16 |
[백준(BOJ) / C++][Silver Ⅰ] 11660번 : 구간 합 구하기 5 (0) | 2024.06.13 |
[백준(BOJ) / C][Bronze Ⅱ] 10811번 : 바구니 뒤집기 (1) | 2024.02.12 |
[백준(BOJ) / C][Bronze Ⅰ] 10798번 : 세로읽기 (0) | 2024.01.28 |