题目
有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
题解
递推,公式如下:
a[i]=(a[i]+a[j])mod 100003 i=1——n
j=i-min(i,k)——i-1
时间复杂度O(nk)
代码
var
n,k,ans,i,j:longint;
a:array[0..100000]of longint;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
begin
readln(n,k);
a[0]:=1;
for i:=1 to n do
for j:=i-min(i,k) to i-1 do
a[i]:=(a[i]+a[j])mod 100003;
writeln(a[n]);
end.