만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

배수 구간

면접 대비

시간 제한1초메모리 제한1024 MB

요약
자연수 배열에서 합이 k로 나누어떨어지는 연속 구간의 개수를 구합니다.
난이도

쉬움10점 중 3점

유형
누적 합, 해시맵, 배열
정답자
아직 제출이 없습니다

문제

자연수로 이루어진 배열 A=[a1,a2,…,an]A = [a_1, a_2, \ldots, a_n]이 주어집니다. 배열 AA에서 ll번째부터 rr번째까지의 원소로 이루어진 부분을 구간 [al,al+1,…,ar][a_l, a_{l+1}, \ldots, a_r]이라고 합니다.

배열 AA와 정수 kk가 주어졌을 때, 구간의 합이 kk로 나누어떨어지는 (l,r)(l, r) 쌍의 개수를 구하세요. 단, l≤rl \le r입니다.

입력

첫 줄에 AA의 원소 개수 nn과 정수 kk가 주어집니다 (1≤n≤200 0001 \le n \le 200\,000, 2≤k≤1092 \le k \le 10^9).

둘째 줄에 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어집니다 (1≤ai≤1091 \le a_i \le 10^9).

출력

조건을 만족하는 (l,r)(l, r) 쌍의 개수를 한 줄에 출력하세요. 여기서 l≤rl \le r이고, ll부터 rr까지 구간의 합이 kk로 나누어떨어져야 합니다.

힌트

예제에서 조건을 만족하는 구간은 다음과 같습니다.

  • l=1l = 1, r=3r = 3, 구간 [1,2,3][1, 2, 3]
  • l=1l = 1, r=4r = 4, 구간 [1,2,3,4][1, 2, 3, 4]
  • l=2l = 2, r=2r = 2, 구간 [2][2]
  • l=2l = 2, r=5r = 5, 구간 [2,3,4,5][2, 3, 4, 5]
  • l=3l = 3, r=5r = 5, 구간 [3,4,5][3, 4, 5]
  • l=4l = 4, r=4r = 4, 구간 [4][4]

예제1

  1. 예제 1

    입력
    5 2
    1 2 3 4 5
    
    예상 출력
    6