2018. 7. 16. 14:15, 알고리즘/BOJ
https://www.acmicpc.net/problem/10986
sum[i]를 A[1] to A[i]의 합이라고 할 때, A[i] + A[i+1] + ... + A[j] = sum[j]-sum[i-1]로 표현할 수 있습니다.
문제를 바꾸어 생각하면 sum[j]-sum[i-1]이 M으로 나누어 떨어지는 (i,j)의 쌍 수이고, 이는 곧 sum[0 to N]을 M으로 나눈 나머지가 각각 몇개씩 있는지에 따라 값을 쉽게 알아낼 수 있습니다.
문제의 예시인 1 2 3 1 2의 경우, sum은 0 1 3 6 7 9이고 3으로 나눈 나머지가 0인 것은 4개, 1인 것은 2개, 2인 것은 0개이므로 4 combination 2 + 2 combination 2가 정답입니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 2342번: Dance Dance Revolution (0) | 2018.07.16 |
---|---|
[BOJ] 11658번: 구간 합 구하기 3 (0) | 2018.07.16 |
[BOJ] 10713번: 기차 여행 (0) | 2018.07.16 |
[BOJ] 13546번: 수열과 쿼리 4 (2) | 2018.07.16 |
[BOJ] 14859번: 세 쌍 서로수 (0) | 2018.07.15 |
[BOJ] 8872번: 빌라봉 (0) | 2018.07.15 |
Comments