만드는 중입니다

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

순열의 하강 개수

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

요약
N 이하의 순열 가운데 정확히 v개의 내림을 가진 것의 개수를 1001113으로 나눈 나머지를 구한다. N은 100 이하이고 질의는 최대 1000개다.
난이도

보통10점 중 7점

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

문제

양의 정수 NN에 대해 차수 NN의 순열은 1부터 NN까지의 정수 집합에서 자기 자신으로 가는 일대일 대응이다. 이런 함수 pp는 함숫값을 차례로 나열해 [p(1) p(2) ... p(N)]로 쓴다.

예를 들어 [5 6 2 4 7 1 3]은 {1, ..., 7}에서 자기 자신으로 가는 함수로, 1을 5로, 2를 6으로, 같은 식으로 7을 3으로 보낸다.

순열 pp의 하강은 p(k)>p(k+1)p(k) > p(k+1)을 만족하는 정수 kk다. 순열 [5 6 2 4 7 1 3]은 2에서 (6 > 2), 5에서 (7 > 1) 하강한다.

des(p)\mathrm{des}(p)를 pp의 하강 개수라고 하면 [5 6 2 4 7 1 3]의 des\mathrm{des} 값은 2다. des(p)=0\mathrm{des}(p) = 0인 순열은 항등 순열 하나뿐이고, des(p)=N−1\mathrm{des}(p) = N-1인 순열은 p(k)=N+1−kp(k) = N+1-k로 정의되는 역순 순열 하나뿐이다.

차수 NN과 값 vv에 대한 순열 하강 개수 PDC(N,v)\mathrm{PDC}(N, v)는 des(p)=v\mathrm{des}(p) = v인 차수 NN의 순열 pp의 개수다. 차수가 3이면 다음과 같다.

  • PDC(3,0)=1\mathrm{PDC}(3, 0) = 1, 해당 순열은 [1 2 3]
  • PDC(3,1)=4\mathrm{PDC}(3, 1) = 4, 해당 순열은 [1 3 2], [2 1 3], [2 3 1], [3 1 2]
  • PDC(3,2)=1\mathrm{PDC}(3, 2) = 1, 해당 순열은 [3 2 1]

주어진 NN과 vv에 대해 PDC(N,v)\mathrm{PDC}(N, v)를 구한다. 개수가 아주 커지므로 답과 중간 계산 모두 1001113으로 나눈 나머지로 다룬다.

입력

첫 줄에 데이터 세트의 개수 PP (1≤P≤10001 \le P \le 1000)가 주어진다. 모든 데이터 세트는 같은 방식으로, 서로 독립적으로 처리한다.

각 데이터 세트는 한 줄이다. 데이터 세트 번호 KK, 차수 NN (2≤N≤1002 \le N \le 100), 값 vv (0≤v≤N−10 \le v \le N-1)가 순서대로 주어진다.

출력

데이터 세트마다 한 줄씩 출력한다. 한 줄에는 데이터 세트 번호 KK, 공백 하나, PDC(N,v)\mathrm{PDC}(N, v)를 1001113으로 나눈 나머지를 십진 정수로 적는다.

예제4

  1. 예제 1

    입력
    4
    1 3 1
    2 5 2
    3 8 3
    4 99 50
    
    예상 출력
    1 4
    2 66
    3 15619
    4 325091
    
  2. 예제 2

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

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

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