순열의 하강 개수
시간 제한2초메모리 제한512 MB
N 이하의 순열 가운데 정확히 v개의 내림을 가진 것의 개수를 1001113으로 나눈 나머지를 구한다. N은 100 이하이고 질의는 최대 1000개다.
문제
양의 정수 에 대해 차수 의 순열은 1부터 까지의 정수 집합에서 자기 자신으로 가는 일대일 대응이다. 이런 함수 는 함숫값을 차례로 나열해 [p(1) p(2) ... p(N)]로 쓴다.
예를 들어 [5 6 2 4 7 1 3]은 {1, ..., 7}에서 자기 자신으로 가는 함수로, 1을 5로, 2를 6으로, 같은 식으로 7을 3으로 보낸다.
순열 의 하강은 을 만족하는 정수 다. 순열 [5 6 2 4 7 1 3]은 2에서 (6 > 2), 5에서 (7 > 1) 하강한다.
를 의 하강 개수라고 하면 [5 6 2 4 7 1 3]의 값은 2다. 인 순열은 항등 순열 하나뿐이고, 인 순열은 로 정의되는 역순 순열 하나뿐이다.
차수 과 값 에 대한 순열 하강 개수 는 인 차수 의 순열 의 개수다. 차수가 3이면 다음과 같다.
- , 해당 순열은
[1 2 3] - , 해당 순열은
[1 3 2],[2 1 3],[2 3 1],[3 1 2] - , 해당 순열은
[3 2 1]
주어진 과 에 대해 를 구한다. 개수가 아주 커지므로 답과 중간 계산 모두 1001113으로 나눈 나머지로 다룬다.
입력
첫 줄에 데이터 세트의 개수 ()가 주어진다. 모든 데이터 세트는 같은 방식으로, 서로 독립적으로 처리한다.
각 데이터 세트는 한 줄이다. 데이터 세트 번호 , 차수 (), 값 ()가 순서대로 주어진다.
출력
데이터 세트마다 한 줄씩 출력한다. 한 줄에는 데이터 세트 번호 , 공백 하나, 를 1001113으로 나눈 나머지를 십진 정수로 적는다.