만드는 중입니다

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

사탕

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

요약
n개의 병에서 각각 0개부터 m_i개까지 꺼내 총 개수가 a 이상 b 이하가 되는 경우의 수를 2004로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

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

문제

존이 사탕이 든 병 nn개를 가지고 있다. 각 병에는 서로 다른 종류의 사탕이 들어 있다(같은 병에 든 사탕은 모두 같은 종류이고, 다른 병에 든 사탕은 서로 다른 종류이다). ii번째 병에는 사탕이 mim_i개 들어 있다.

존은 사탕을 전부 합쳐 aa개 이상 bb개 이하로 먹으려고 한다. 각 병에서는 00개부터 mim_i개까지 원하는 만큼 꺼내 먹을 수 있다. 어느 한 병에서라도 꺼낸 사탕의 개수가 다르면 서로 다른 방법으로 센다.

먹는 사탕의 총 개수가 aa개 이상 bb개 이하가 되도록 사탕을 고르는 방법의 수를 구하여라. 이 값이 매우 커질 수 있으므로 20042004로 나눈 나머지를 출력한다.

입력

첫째 줄에 정수 nn, aa, bb가 공백 하나로 구분되어 주어진다(1≤n≤101 \le n \le 10, 0≤a≤b≤1070 \le a \le b \le 10^7). 다음 nn개의 줄에는 정수가 하나씩 주어지며, i+1i+1번째 줄에는 ii번째 병에 든 사탕의 개수 mim_i가 주어진다(0≤mi≤1060 \le m_i \le 10^6).

출력

존이 사탕을 고를 수 있는 방법의 수를 kk라고 하자. 첫째 줄에 정수 하나 k mod 2004k \bmod 2004(kk를 20042004로 나눈 나머지)를 출력한다.

힌트

예제에서 두 병에는 각각 33개와 55개의 사탕이 들어 있고, 먹는 총 개수는 11개 이상 33개 이하여야 한다. 각 방법을 (1번 병에서 꺼낸 개수, 2번 병에서 꺼낸 개수)로 나타내면, 유효한 99가지 방법은 다음과 같다.

(1,0),(2,0),(3,0),(0,1),(0,2),(0,3),(1,1),(1,2),(2,1)(1,0), (2,0), (3,0), (0,1), (0,2), (0,3), (1,1), (1,2), (2,1)

예제3

  1. 예제 1

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

    입력
    1 0 5
    5
    
    예상 출력
    6
    
  3. 예제 3

    입력
    2 0 1000
    2
    2
    
    예상 출력
    9