나머지 합

면접 대비

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

요약
합이 M으로 나누어떨어지는 연속 구간 개수를 누적합 나머지 빈도로 셉니다.
난이도

보통10점 중 4점

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

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다. 연속한 구간의 합이 MM으로 나누어떨어지는 구간의 개수를 구한다.

구간은 1≤i≤j≤N1 \le i \le j \le N을 만족하는 쌍 (i,j)(i, j)로 나타내고, AiA_i부터 AjA_j까지를 포함한다. ii나 jj 중 하나라도 다르면 서로 다른 구간으로 센다.

입력

첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤N≤1061 \le N \le 10^6, 2≤M≤1032 \le M \le 10^3)

둘째 줄에 수열을 이루는 NN개의 수 A1,A2,…,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. (0≤Ai≤1090 \le A_i \le 10^9)

출력

조건을 만족하는 구간의 개수를 첫째 줄에 출력한다.

예제3

  1. 예제 1

    입력
    5 3
    1 2 3 1 2
    
    예상 출력
    7
    
  2. 예제 2

    입력
    3 5
    1 2 3
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1 2
    4
    
    예상 출력
    1