题目描述
有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
输入输出格式
输入格式:
两个正整数N,K。
输出格式:
一个正整数,为不同方式数,由于答案可能很大,你需要输出ans \bmod 100003后的结果。
输入输出样例
输入样例#1: 复制
5 2
输出样例#1: 复制
8
#include<stdio.h>
#define N 100003
long long a[100001];
int main(){
int n,k;
scanf("%d %d",&n,&k);
a[0]=a[1]=1;
for(int i=2;i<=n;i++){
if(i<=k)
a[i]=a[i-1]*2%N; //这是神马递推式,自己体会
else {
a[i]=a[i-1]*2-a[i-k-1];
a[i]%=N;
}
}
printf("%lld\n",(a[n]+N)%N); //这里如果a[n]<0;就得加上N;我也不是为啥
return 0;
}