題目描述
有n級的台階,你一開始在底部,每次可以向上邁最多k級台階(最少11級),問到達第n級台階有多少種不同方式。
輸入輸出格式
輸入格式:
兩個正整數n,k。
輸出格式:
乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ans mod 100003後的結果。
輸入輸出樣例
輸入樣例#1:
5 2輸出樣例#1:
8ac_code:
way1:
/*
根據最直接規律:f(n) = f(n-1)+f(n-2)+...f(n-k),
直接模擬
*/#include
#define mod 100003
int a[
100005];
intmain()
}printf
("%d\n"
,a[n]);
return0;
}
way2:
/*
進一步找規律,效率明顯提高:
1. n<= k: f(n+1)=f(n)*2;
2. n > k: f(n+1) = f(n)*2 - f(n-k);
*/#include
#define mod 100003
int a[
100005];
intmain()
//a[i] = 2*a[i-1]%mod;
}for
(int i = k+
1; i <= n; i++
)printf
("%d\n"
,a[n]);
return0;
}
way3:
/*
看了一下別人的題解,說可以記憶化爆搜。
但是n=100000時,沒有輸出,提交居然ac,這題資料太水!
*/#include
#define mod 100003
int a[
100005
],k;
intfind
(int x)
a[x]
= sum;
return sum;
}int
main()
P1192 台階問題 遞推
有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少1級 問到達第n級台階有多少種不同方式。輸入格式 兩個正整數n,k。輸出格式 乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ansmod100003後的結果。輸入樣例 1 複製 5 2輸出樣例 1 複製 8對於20 20 20 的...
P1192 台階問題
題目描述 有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少11級 問到達第n級台階有多少種不同方式。輸入格式 兩個正整數n,k。輸出格式 乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ans mod 100003後的結果。輸入輸出樣例 輸入 1 5 2 輸出 1 說明 提示 對...
P1192 台階問題
遞推問題,要用到遞推式 設f n 為n個台階的走法總數,把n個台階的走法分成k類 第1類 第1步走1階,剩下還有n 1階要走,有f n 1 種方法 第2類 第1步走2階,剩下還有n 2階要走,有f n 2 種方法 第3類 第1步走3階,剩下還有n 3階要走,有f n 3 種方法 第k類 第1步走k階...