#P0578. 向上跳带(Up the Strip)
向上跳带(Up the Strip)
题目描述
请注意,本题内存限制比通常题目更低。
有一条竖直的长条,共有 个格子,从上到下编号为 到 。一个棋子初始位于格子 ,你需要通过若干次移动让它到达格子 。
当棋子位于某个格子 时,一次移动可以是下面两种之一:
- 减法移动:选择一个整数 ,满足 ,把棋子从 移动到 ;
- 下取整除法移动:选择一个整数 ,满足 ,把棋子从 移动到 。
请计算用一次或多次移动从格子 到达格子 的方案数,并对 取模。如果一次移动中有多种不同选择能到达同一个格子,这些选择也视为不同方案。
输入格式
一行两个整数 ,分别表示长条长度和模数。
输出格式
输出一个整数,表示从格子 到格子 的方案数,对 取模。
样例
3 998244353
5
5 998244353
25
42 998244353
793019428
787788 100000007
94810539
说明
第一个样例中,从格子 一步到达格子 有 种:减去 ,或者除以 ,或者除以 。
另外还有 种经过格子 的方案:先减去 ,再减去 或除以 。
因此总方案数为 。
数据范围
,,且 是质数。