ジョンは展示会での集会に出席するためにNNの牛を取るために、これらの牛は牛することができ、牛をすることができます。
牛は、行に立ってする必要がありますが、牛が攻撃的である、牛のトラブル行く間違っを避けるために、ジョンは、任意の2頭の牛との間に少なくともKKのみ雌牛をすることにしました。
いくつかの方法にキューイングの合計を計算し、すべての牛は、同じように、すべて同じ牛、剰余50,000,115,000,011への回答を見ることができます。
入力形式
のライン、および入力2つの整数NN KK。
出力フォーマット
番号キューイング方法を表す整数。
データ範囲
1≤N≤1051≤N≤105、
0≦K <N0≤K<Nの
入力サンプル:
42
サンプル出力:
6
サンプルの解釈
方法の66種類がある:女性の女性の女性の女性、男性、女性、女性、女性、女性、男性、女性、女性、女性、女性、男性、女性、女性、女性、男性、女性、男性、女性、男性、女性。
思考:F [N]で表されるN、全て1、最後、および再帰的に可能な種の数、最後から二番目のすべての可能な位置に1
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010, mod = 5000011;
int n, k;
int f[N], s[N];
int main(){
cin >> n >> k;
s[0] = f[0] = 1;
for (int i = 1; i <= n; i ++){
f[i] = s[max(i - k - 1, 0)];
s[i] = (s[i - 1] + f[i]) % mod;
}
cout << s[n] << endl;
return 0;
}