제한된 순열

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

요약
1부터 N까지의 순열 중 각 위치와 값의 차이가 K 이하인 순열의 개수를 비트마스크 DP로 구하는 문제입니다.
난이도

보통10점 중 6점

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

문제

1부터 N까지의 정수를 한 번씩 사용해 나열한 것을 길이 N의 순열이라고 한다. 이러한 순열은 모두 N! = N × (N - 1) × ... × 2 × 1가지이다.

순열 P에서 i번째 원소를 P[i]라고 하자. 모든 1 <= i <= N에 대해 |P[i] - i| <= K를 만족하는 순열 P의 개수를 구하시오.

입력

첫째 줄에 자연수 N과 K가 공백으로 구분되어 주어진다. N은 100 이하이고, K는 6 이하이다.

출력

조건을 만족하는 순열의 개수를 첫째 줄에 출력한다.

예제4

  1. 예제 1

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

    입력
    3 2
    
    예상 출력
    6
    
  3. 예제 3

    입력
    10 3
    
    예상 출력
    19708
    
  4. 예제 4

    입력
    100 1
    
    예상 출력
    573147844013817084101