题目描述
FJ想N头牛(公牛或母牛)排成一排接受胡总的检阅,经研究发现公牛特别好斗,如果两头公牛离得太近就会发生冲突,通过观察两头公牛之间至少要有K(0<=K<=N)头母牛才能避免冲突。
FJ想请你帮忙计算一共有多少种放置方法,注意所有的公牛被认为是一样的,母牛也是,所以两种放置方法被认为不同当且仅当某些位置牛的种类不同。
题目解析
简单的递推
直接见代码
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,k;
int f[100005];
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<=n;i++)
if(i<=k) f[i]=i+1;
else f[i]=(f[i-1]+f[i-1-k])%5000011;
cout<<f[n];
}