아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

나누기

면접 대비

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

요약
음수를 포함할 수 있는 수열을 합이 같은 네 개의 연속 구간으로 나누는 방법의 수를 센다.
난이도

보통10점 중 6점

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

문제

NN개의 정수 수열 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다. 이 수열을 각각이 연속된 네 부분으로 나누려고 한다. 각 부분은 최소 하나의 수를 포함해야 하고, 네 부분의 합은 모두 같아야 한다. 즉, 어떤 i,j,ki, j, k (1≤i<j<k<N1 \le i < j < k < N)에 대해 수열을 [A1,…,Ai],[Ai+1,…,Aj],[Aj+1,…,Ak],[Ak+1,…,AN][A_1, \dots, A_i], [A_{i+1}, \dots, A_j], [A_{j+1}, \dots, A_k], [A_{k+1}, \dots, A_N]으로 나눈다.

예를 들어 주어진 수열이 4,−1,2,1,−3,1,2,2,1,34, -1, 2, 1, -3, 1, 2, 2, 1, 3이라고 하자. 이 수열을 아래와 같이 나누면 각 부분의 합이 달라서 허용되는 형태가 아니다.

[4,−1,2],[1,−3,1,2],[2,1],[3][4, -1, 2], [1, -3, 1, 2], [2, 1], [3]

아래와 같이 나눈 경우 각 부분의 합이 모두 같다.

[4,−1],[2,1],[−3,1,2,2,1],[3][4, -1], [2, 1], [-3, 1, 2, 2, 1], [3]

아래와 같이 나눈 경우들도 각 부분의 합이 모두 같다.

[4,−1],[2,1,−3,1,2],[2,1],[3][4, -1], [2, 1, -3, 1, 2], [2, 1], [3] 혹은 [4,−1,2,1,−3],[1,2],[2,1],[3][4, -1, 2, 1, -3], [1, 2], [2, 1], [3]

수열을 입력 받아 위와 같이 나눌 수 있는 가능한 방법의 개수를 계산하는 프로그램을 작성하라.

입력

첫 번째 줄에 수열의 길이 NN이 주어진다.

두 번째 줄에 NN개의 정수 A1,A2,…,ANA_1, A_2, \dots, A_N이 공백 하나씩을 사이로 두고 주어진다.

출력

첫 번째 줄에 가능한 방법의 개수를 출력한다.

출력 값이 매우 클 수 있으므로 C, C++ 언어에서는 long long 형의 변수를, Java에서는 long 형의 변수를 사용해야 한다.

제한

  • 4≤N≤100 0004 \le N \le 100\,000
  • 모든 1≤i≤N1 \le i \le N에 대해 −1 000≤Ai≤1 000-1\,000 \le A_i \le 1\,000

예제2

  1. 예제 1

    입력
    4
    1 1 1 1
    
    예상 출력
    1
    
  2. 예제 2

    입력
    10
    4 -1 2 1 -3 1 2 2 1 3
    
    예상 출력
    3