계단 오르고 내려오기

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

요약
0번 칸에서 N번 칸까지 올라갔다 내려오면서 시작점과 꼭대기를 뺀 모든 칸을 정확히 한 번씩 밟고, 한 번에 K칸 이내로 움직일 때 가능한 이동 방법의 수를 구한다.
난이도

보통10점 중 7점

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

문제

00번째 칸부터 NN번째 칸까지 총 N+1N+1칸이 있는 계단이 있다. 00번째 칸은 계단의 시작점이고, NN번째 칸은 계단의 꼭대기이다.

태우는 계단의 시작점부터 출발해 계단을 올라 꼭대기에 도달한 후, 다시 시작점으로 내려가는 운동을 하기로 했다. 이때 시작점을 제외한 모든 칸은 정확히 11번씩 밟아야 하며, 꼭대기를 제외한 곳에서는 방향을 바꿀 수 없다. 또한, 한 번에 최대 KK개의 칸만큼 올라가거나 내려갈 수 있다. 엄밀하게 표현하면, 계단의 xx번째 칸에 있을 때 ∣x−y∣≤K\left\vert x-y \right\vert\le K를 만족하는 계단의 yy번째 칸으로 이동이 가능하다.

태우가 계단을 오르내리는 운동을 할 때 이동하는 방법의 수를 구하여라.

입력

첫째 줄에 계단의 꼭대기 칸의 번호 NN과 태우가 한 번에 오르내릴 수 있는 계단의 수 KK가 공백으로 구분되어 주어진다. (2≤N,K≤100,0002\le N,K\le 100\\, 000)

출력

가능한 이동 방법의 수를 109+710^9+7로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    6 3
    
    예상 출력
    16