题目描述
有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
输入输出格式
输入格式:
两个正整数N,K。
输出格式:
一个正整数,为不同方式数,由于答案可能很大,你需要输出ansmod100003后的结果。
输入输出样例
输入样例#1: 复制
5 2
输出样例#1: 复制
8
说明
对于20%20\%20%的数据,有N≤10,K≤3
对于40%40\%40%的数据,有N≤1000
对于100%100\%100%的数据,有N≤100000,K≤100
做过 k = 2 时 , f[i] = f[i-1] + f[i-2 ] ;
这里就是 f[i] =
#include<iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <cstring>
#include<algorithm>
using namespace std;
const int MAX = 1000005 ;
const int inf = 0x3f3f3f3f ;
typedef long long LL ;
int n , k ;
int ans ;
int s[MAX];
int main()
{
cin >> n >>k ;
s[0] = 1 ;
for(int i = 1 ; i<=n ; i++ ){
for(int j = 1 ; j<=k && (i-j)>=0 ;j++){
s[i]+=s[i-j] ;
s[i]%=100003 ;
}
}
printf("%d",s[n]);
return 0;
}