징검다리 뒤로 건너기

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

요약
1번 돌에서 N번 돌까지, 매 이동이 앞으로 1에서 K칸 또는 뒤로 정확히 1칸인 자기회피 경로의 수를 1e9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

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

문제

11번부터 NN번까지 번호가 붙은 NN개의 돌이 순서대로 일렬로 나열되어 있습니다. 11번 돌에서 출발하여 NN번 돌까지 주어진 정수 KK에 대해 다음 규칙을 만족하면서 이동하려 합니다.

  • ii번 돌에서는 1≤x≤K1\le x\le K인 정수 xx에 대해 i+xi+x번 돌로 이동하거나, i−1i-1번 돌로 이동할 수 있습니다.
  • 돌이 없는 위치로는 이동할 수 없습니다.
  • 출발점과 도착점을 포함하여, 이미 밟은 돌은 다시 밟을 수 없습니다.

규칙에 따라 11번 돌에서 NN번 돌까지 이동하는 경우의 수를 소수 1,000,000,007(=109+7)1\\, 000\\, 000\\, 007(=10^9+7)로 나눈 나머지를 구해봅시다. 밟은 돌의 번호를 순서대로 나열한 수열이 다르면 다른 이동으로 생각합니다.

입력

첫 번째 줄에 돌의 개수 NN과 문제의 정수 KK가 공백으로 구분되어 주어집니다. (1≤N≤2,0001\le N\le 2\\, 000; 1≤K≤501\le K\le 50)

출력

첫 번째 줄에 규칙에 따라 11번 돌에서 NN번 돌까지 이동하는 경우의 수를 1,000,000,007(=109+7)1\\, 000\\, 000\\, 007(=10^9+7)로 나눈 나머지를 출력합니다.

예제3

  1. 예제 1

    입력
    5 3
    
    예상 출력
    12
    
  2. 예제 2

    입력
    8 4
    
    예상 출력
    191
    
  3. 예제 3

    입력
    1923 45
    
    예상 출력
    703532137