만드는 중입니다

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

원형 정수열 점수의 총합

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

요약
각 값 1부터 N까지가 C_a번씩 나타나는 원형 수열을 모두 만들고, 연속 구간 길이의 곱을 모두 더한 값을 10^9+7로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

길이가 LL인 원형 정수열 [h1,h2,⋯ ,hL][h_1, h_2, \cdots, h_L]이 있다고 하자. hih_i와 hi+1h_{i+1}은 인접해 있으며, 특별히 hLh_L과 h1h_1도 인접해 있다. 이 원형 정수열의 점수는 같은 수가 인접해 이루는 부분의 크기를 모두 구해서 곱한 값이다. 예를 들어 h=[1,1,2,2,1,3,3,3,1,1]h = [1, 1, 2, 2, 1, 3, 3, 3, 1, 1]이면, 점수는 4×2×1×3=244 \times 2 \times 1 \times 3 = 24점이 된다.

1 이상 NN 이하의 정수만 포함하면서, 정수 aa를 정확히 CaC_a개 포함하는 서로 다른 원형 정수열에 대해 점수의 총합을 구하는 프로그램을 작성하라. 두 원형 정수열 hh와 h′h'이 다르다는 것은 hi≠hi′h_i \ne h'_i인 ii가 존재한다는 것이다.

입력

첫 번째 줄에 하나의 정수 NN(1≤N≤501 \le N \le 50)이 주어진다.

두 번째 줄에는 NN개의 정수 C1,C2,⋯ ,CNC_1, C_2, \cdots, C_N(1≤Ca≤1001 \le C_a \le 100)이 공백 하나로 구분되어 주어진다.

출력

첫 번째 줄에 정수 aa를 정확히 CaC_a개 포함하는 모든 서로 다른 원형 정수열에 대해 점수의 총합을 출력한다. 이 수는 매우 클 수 있으므로, 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

힌트

첫 번째 입력에서 만들어지는 원형 정수열은 다음의 66가지이다.

  • [1,1,2,2][1, 1, 2, 2]: 44점
  • [1,2,1,2][1, 2, 1, 2]: 11점
  • [1,2,2,1][1, 2, 2, 1]: 44점
  • [2,1,1,2][2, 1, 1, 2]: 44점
  • [2,1,2,1][2, 1, 2, 1]: 11점
  • [2,2,1,1][2, 2, 1, 1]: 44점

그러므로 총 1818점이다.

예제5

  1. 예제 1

    입력
    2
    2 2
    
    예상 출력
    18
    
  2. 예제 2

    입력
    3
    4 3 2
    
    예상 출력
    7830
    
  3. 예제 3

    입력
    4
    4 4 4 4
    
    예상 출력
    818559048
    
  4. 예제 4

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

    입력
    6
    7 8 9 10 11 12
    
    예상 출력
    609539975