본문 바로가기
Python/백준

[Python] 백준 10986 나머지 합

by 푸_푸 2023. 6. 20.
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

결과

백준 10986 나머지 합

 

 

10986번: 나머지 합

수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j)

www.acmicpc.net

 

728x90

댓글