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

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

선물

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

요약
길이 N인 수열을 0부터 L-1까지 순서대로 나열한 길이 L(≤K) 블록으로 분할하는 경우의 수를 세고 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

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

문제

카레브는 길이가 KK 이하인 단순 수열을 아주 좋아한다. 길이가 LL인 단순 수열은 00부터 L−1L-1까지의 수를 이 순서대로 나열한 수열이다. 예를 들어 {0}\{0\}, {0,1,2,3}\{0,1,2,3\}, {0,1,2,3,4,5,6}\{0,1,2,3,4,5,6\}은 단순 수열이지만 {1}\{1\}, {0,1,3,2}\{0,1,3,2\}, {0,1,3}\{0,1,3\}은 단순 수열이 아니다.

카레브의 생일이 다가와서 폴리는 단순 수열을 몇 개 사서 이어 붙인 흥미로운 수열을 선물하려고 한다. 흥미로운 수열은 길이가 각각 KK 이하인 단순 수열 여러 개를 차례로 이어 붙여 만든 수열이다. 예를 들어 K=3K=3이면 {0,1,2,0}\{0,1,2,0\}, {0,1,0,1}\{0,1,0,1\}, {0,0,0}\{0,0,0\}, {0,1,2}\{0,1,2\}는 흥미로운 수열이지만 {0,1,2,3}\{0,1,2,3\}, {0,1,1}\{0,1,1\}, {0,0,2}\{0,0,2\}는 아니다.

고를 수 있는 수열이 워낙 많아서 폴리는 어떤 것을 살지 정하지 못하고 있다. 그래서 선택지가 정확히 몇 가지인지 궁금해졌다.

폴리가 살 수 있는 단순 수열의 최대 길이 KK와 폴리가 만들려는 흥미로운 수열의 길이 NN이 주어질 때, 서로 다른 흥미로운 수열이 몇 개인지 구하는 프로그램을 작성한다. 이 수가 매우 클 수 있으므로 109+710^9+7로 나눈 나머지를 출력한다.

입력

첫째 줄에 두 정수 NN과 KK가 공백으로 구분되어 순서대로 주어진다.

출력

첫째 줄에 폴리가 만들 수 있는 서로 다른 흥미로운 수열의 개수를 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 1≤K≤N≤2×1061 \le K \le N \le 2 \times 10^6

힌트

N=4N=4, K=3K=3인 경우 가능한 흥미로운 수열은 {0,0,0,0}\{0,0,0,0\}, {0,0,0,1}\{0,0,0,1\}, {0,0,1,0}\{0,0,1,0\}, {0,0,1,2}\{0,0,1,2\}, {0,1,0,0}\{0,1,0,0\}, {0,1,0,1}\{0,1,0,1\}, {0,1,2,0}\{0,1,2,0\}의 7개이다.

예제3

  1. 예제 1

    입력
    4 3
    
    예상 출력
    7
    
  2. 예제 2

    입력
    11 5
    
    예상 출력
    912
    
  3. 예제 3

    입력
    55 35
    
    예상 출력
    377876174