该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
T2. 上台阶
| 属性 |
值 |
| 内存限制 |
256 MiB |
| 时间限制 |
1000 ms |
题目描述
小明每天上学都要走一段台阶。这段台阶共有 N 级(从第 0 级地面开始,到第 N 级平台结束)。
小明一步可以跨 1 级台阶,也可以一步跨 2 级台阶。但是,最近台阶在维修,有 M 级台阶因为破损被封锁了,不能踩上去(第 0 级和第 N 级一定是完好的)。
小明想从第 0 级(地面)出发,走到第 N 级(平台)。他想知道,一共有多少种不同的走法。
由于答案可能很大,请输出答案对 109+7(即 1000000007)取模的结果。
输入格式
第一行两个整数 N,M,分别表示台阶总级数和破损台阶的数量。
第二行 M 个整数 b1,b2,…,bM,表示破损台阶的编号(1≤bi≤N−1)。保证 bi 互不相同且按升序给出。
输出格式
输出一行一个整数,表示方案数对 109+7 取模的结果。
样例
样例 #1
输入样例(t2.in)
4 0
(M=0 时第二行为空行)
输出样例(t2.out)
5
解释:4 级台阶,没有破损。从 0 走到 4,每次 1 或 2 级:
- 0→1→2→3→4
- 0→1→2→4
- 0→1→3→4
- 0→2→3→4
- 0→2→4
共 5 种。
样例 #2
输入样例
5 1
2
输出样例
2
解释:第 2 级破损不能踩。从 0 到 5 的方案:
- 0→1→3→4→5
- 0→1→3→5
共 2 种。(注意 0→2→… 不可行,因为 2 是破损台阶)
样例 #3
输入样例
6 2
2 4
输出样例
1
解释:只有 0→1→3→5→6 这一种走法。
数据范围与提示
| 测试点编号 |
N≤ |
M≤ |
特殊约定 |
| 1∼3 |
20 |
0 |
无破损台阶 |
| 4∼6 |
1000 |
10 |
无特殊约定 |
| 7∼10 |
105 |
100 |
对于 100% 的数据,1≤N≤105,0≤M≤min(N−1,100),1≤bi≤N−1,bi 严格递增。