https://www.acmicpc.net/problem/10986
10986번: 나머지 합
수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j)
www.acmicpc.net
# 10986 - Python 3
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
arr = list(map(int, input().split()))
num_remains = [0 for i in range(m)] # 각 나머지에 해당하는 누적 합의 경우의 수들을 요소로 가진 list
summ = 0
for i in arr:
summ += i
num_remains[summ % m] += 1 # 각 나머지가 나오는 경우에 +1
result = num_remains[0] # 2가지 선택 필요 X(그 자체만으로 조건 충족 가능)
for i in num_remains:
result += i * (i - 1) // 2 # 조합과 같은 개념(i가지 경우에서 임의로 2가지를 뽑는 경우의 수)
print(result)'코딩' 카테고리의 다른 글
| [Python] 백준 #2164. 카드2 (0) | 2023.03.29 |
|---|---|
| [Python] 백준 #13909. 창문 닫기 (0) | 2023.03.29 |
| [Python] 백준 #11866. 요세푸스 문제 0 (0) | 2023.03.24 |
| [Python] 백준 #2559. 수열 (0) | 2023.03.22 |
| [Python] 백준 #11659. 구간 합 구하기 4 (0) | 2023.03.22 |