728x90
백준 10986 나머지 합
문제
수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오.
즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다.
입력
첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 10^6, 2 ≤ M ≤ 10^3)
둘째 줄에 N개의 수 A1, A2, ..., AN이 주어진다. (0 ≤ Ai ≤ 10^9)
출력
첫째 줄에 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다.
제출
import sys
input=sys.stdin.readline
n,m=map(int,input().split())
l=list(map(int,input().split()))+[0]
r=[0]*m
for i in range(n):
l[i]=l[i-1]+l[i]
r[l[i]%m]+=1
c=r[0]
for i in r:
c+=i*(i-1)//2
print(c)
예제
5 3
1 2 3 1 2
결과
728x90
'Python > 백준' 카테고리의 다른 글
[Python] 백준 25682 체스판 다시 칠하기 2 (시간 초과) (0) | 2023.06.22 |
---|---|
[Python] 백준 11660 구간 합 구하기 5 (0) | 2023.06.21 |
[Python] 백준 16139 인간-컴퓨터 상호작용 (pypy3 100점) (0) | 2023.06.19 |
[Python] 백준 2559 수열 (0) | 2023.06.18 |
[Python] 백준 11659 구간 합 구하기 4 (0) | 2023.06.17 |
댓글