아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

증가 부분수열

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

요약
1부터 N까지의 순열 가운데 최장 증가 부분수열의 길이가 정확히 B인 것의 개수를 1,000,000,000으로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

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

문제

1,2,…,N1, 2, \ldots, N 으로 이루어진 수열 p(1),p(2),…,p(N)p(1), p(2), \ldots, p(N) 에서 모든 원소가 서로 다르면 이 수열을 순열이라고 한다.

순열 pp 에 대하여 1≤i1<i2<⋯<ik≤N1 \le i_1 < i_2 < \cdots < i_k \le N 인 인덱스가 존재하여 p(i1)<p(i2)<⋯<p(ik)p(i_1) < p(i_2) < \cdots < p(i_k) 를 만족하면, 순열 pp 는 길이 kk 인 증가 부분수열을 포함한다고 한다.

순열 pp 가 길이 BB 인 증가 부분수열은 포함하지만 길이 B+1B+1 인 증가 부분수열은 포함하지 않을 때, BB 를 이 순열의 증가 차수라고 한다.

정수 NN 이 주어졌을 때, 증가 차수가 정확히 BB 인 순열의 개수를 구하는 프로그램을 작성하여라. 개수가 매우 클 수 있으므로 1,000,000,0001{,}000{,}000{,}000 으로 나눈 나머지를 출력한다.

입력

입력은 한 줄로 이루어진다. 이 줄에는 두 정수 NN 과 BB (1≤N≤401 \le N \le 40, 1≤B≤51 \le B \le 5) 가 하나 이상의 공백으로 구분되어 주어진다.

출력

증가 차수가 정확히 BB 인 순열의 개수를 1,000,000,0001{,}000{,}000{,}000 으로 나눈 나머지를 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    3 2
    
    예상 출력
    4