C - K-bonacci Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点 : 300

問題文

正整数 N,K が与えられます。長さ N+1 の数列 A=(A_0,A_1,\ldots,A_N) の各要素の値を、以下の方法で定義します。

  • 0\leq i<K のとき、 A_i=1
  • K\leq i のとき、 A_i=A_{i-K}+A_{i-K+1}+\ldots+A_{i-1}

A_N10^9 で割ったあまりを求めてください。

制約

  • 1\leq N, K\leq 10^{6}
  • 入力される数値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

N K

出力

答えを出力せよ。


入力例 1

4 2

出力例 1

5

A_0=A_1=1 であり、A_2=A_0+A_1=2,A_3=A_1+A_2=3,A_4=A_2+A_3=5 となります。


入力例 2

10 20

出力例 2

1

入力例 3

1000000 500000

出力例 3

420890625

A_N10^9 で割ったあまりを出力することに注意してください。

Score : 300 points

Problem Statement

You are given positive integers N and K. Define a sequence A = (A_0, A_1, \ldots, A_N) of length N+1 as follows:

  • A_i = 1 for 0 \le i < K;
  • A_i=A_{i-K}+A_{i-K+1}+\ldots+A_{i-1} for K \le i.

Find A_N modulo 10^9.

Constraints

  • 1 \le N, K \le 10^{6}
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

N K

Output

Print the answer.


Sample Input 1

4 2

Sample Output 1

5

We have A_0 = A_1 = 1, and A_2=A_0+A_1=2,A_3=A_1+A_2=3,A_4=A_2+A_3=5.


Sample Input 2

10 20

Sample Output 2

1

Sample Input 3

1000000 500000

Sample Output 3

420890625

Remember to print A_N modulo 10^9.