여정

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

요약
길이 N인 이진 문자열 가운데 같은 문자가 K번을 넘게 연속하지 않는 것의 개수를 1e9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

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

문제

어느 날 호머는 집에서 심심해져 스프링필드 땅을 탐험하는 여정을 떠나기로 했다. 스프링필드 땅은 무한한 격자다. 호머의 집은 칸 (0,0)(0, 0)에 있고, 그의 여정은 NN개의 걸음으로 이루어지며, 각 걸음은 오른쪽으로 한 칸 이동하거나 아래로 한 칸 이동하는 것 중 하나다.

이미 지루해진 호머는 여정마저 지루해지길 원하지 않았다. 그래서 같은 방향으로 KK걸음 연속을 넘게 움직이지 않기로 했다. 즉, 여정이 흥미롭다는 것은 연속한 K+1K+1개의 걸음마다 호머가 두 방향으로 모두 움직인 경우를 말한다.

그림 1: N=5N = 5, K=2K = 2인 예 (첫 번째 테스트 케이스)

NN과 KK가 주어질 때, 호머가 만들 수 있는 흥미로운 여정의 수를 세시오. 두 여정은 어떤 ii에 대해 첫 번째 여정의 ii번째 걸음이 두 번째 여정의 ii번째 걸음과 다르면 서로 다른 것으로 본다. 수가 클 수 있으므로 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력하시오.

입력

프로그램은 하나 이상의 테스트 케이스에 대해 채점된다. 입력의 첫 줄에는 테스트 케이스의 수 TT가 주어지고 (1≤T≤5001 \le T \le 500), 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스는 정수 두 개가 공백 하나로 구분되어 있는 한 줄로 주어진다. 첫 번째 정수는 호머의 여정에 있는 걸음 수 NN이고, 두 번째 정수 KK는 호머가 같은 방향으로 연속해서 움직일 수 있는 최대 걸음 수다. 여기서 0≤N≤1050 \le N \le 10^5, 0≤K≤1050 \le K \le 10^5이다.

출력

각 테스트 케이스마다 호머가 만들 수 있는 서로 다른 여정의 수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2
    5 2
    10 1
    
    예상 출력
    16
    2