소방관 (Firepersons)

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

요약
선형 점화식의 처음 k개 항과 계수가 주어질 때, 10000으로 나눈 나머지 수열의 i번째 항을 구한다. i는 10^9까지 가능하다.
난이도

보통10점 중 7점

유형
수학, 행렬, 분할 정복, 구현
정답자
아직 제출이 없습니다

문제

소방관에게는 정수 등급이 부여되며, 이 등급은 다음과 같이 정의되는 정수 수열로 정해진다.

차수가 kk인 수열은 처음 kk개의 항 a0,a1,…,ak−1a_0, a_1, \dots, a_{k-1}과 정수 상수 b1,b2,…,bkb_1, b_2, \dots, b_k로 정의된다. n≥kn \ge k인 항은 다음 점화식으로 구한다.

an=(∑i=1kan−i bi) mod 10000a_n = \left(\sum_{i=1}^{k} a_{n-i}\, b_i\right) \bmod 10000

ii번째로 오래된 소방관은 등급 aia_i를 받는다. 수열의 매개변수와 정수 ii가 주어질 때, ii번째 소방관의 등급, 즉 이 수열의 제 ii항 aia_i를 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 다음 정수들이 공백 하나로 구분되어 순서대로 주어진다.

ka0 … ak−1b1 … bkik \quad a_0 \ \dots \ a_{k-1} \quad b_1 \ \dots \ b_k \quad i

  • 1≤k≤1001 \le k \le 100 : 수열의 차수
  • 0≤aj<100000 \le a_j < 10000 : 수열의 처음 kk개 항
  • 0≤bj<100000 \le b_j < 10000 : 점화식의 곱셈 상수
  • 0≤i<1 000 000 0000 \le i < 1\,000\,000\,000 : 구하려는 항의 번호

입력의 끝은 00 하나만 들어 있는 줄로 표시된다.

출력

각 테스트 케이스마다 한 줄에 해당 수열의 제 ii항 aia_i를 출력한다. 출력하는 줄의 순서는 입력에 주어진 테스트 케이스의 순서와 같아야 한다.

예제7

  1. 예제 1

    입력
    2 0 1 1 1 6
    0
    
    예상 출력
    8
    
  2. 예제 2

    입력
    2 0 1 1 1 20
    0
    
    예상 출력
    6765
    
  3. 예제 3

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

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

    입력
    2 9999 9999 9999 9999 5
    0
    
    예상 출력
    2
    
  6. 예제 6

    입력
    1 7 3 5
    0
    
    예상 출력
    1701
    
  7. 예제 7

    입력
    3 1 2 3 0 0 1 6
    0
    
    예상 출력
    1