公牛和母牛

Description
  FJ想N头牛(公牛或母牛)排成一排接受胡总的检阅,经研究发现公牛特别好斗,如果两头公牛离得太近就会发生冲突,通过观察两头公牛之间至少要有K(0<=K<=N)头母牛才能避免冲突。
  FJ想请你帮忙计算一共有多少种放置方法,注意所有的公牛被认为是一样的,母牛也是,所以两种放置方法被认为不同当且仅当某些位置牛的种类不同。

Input

  第一行:两个空格隔开的整数N(N<=100000)和K。

Output

  输出一个整数表示方法总数,答案可能很大,所以只需输出mod 5,000,011的值即可。

Sample Input
4 2

Sample Output
6

Data Constraint

Hint

【样例说明】
以下为6种放置方法,‘B’表示公牛,‘C’表示母牛
CCCC
BCCC
CBCC
CCBC
CCCB
BCCB
.
.
.
.
.
.
.

程序:

var
n,k,i:longint;
dp:array[0..100005]of int64; 
begin
    read(n,k);
    for i:=0 to n do
    if i<=k then dp[i]:=i+1 else dp[i]:=(dp[i-1]+dp[i-k-1]) mod 5000011;
    write(dp[n]);
end.
原文地址:https://www.cnblogs.com/YYC-0304/p/9499981.html