SZTG-L-CF1558B. Up the Strip

提交1 通过1
通过率100%
时间限制2000ms
内存限制128MiB

题目描述

题目描述

题面描述

你有一张 1×n 1 \times n 的纸带,由 n n 个格子组成。初始有一个点在 n n 号格子(即左数第 n n 个)中。

假设现在这个点在 x (x>1) x\ (x > 1) 号格子,每次你可以对这个点进行如下操作中的一种:

  1. 减法。选择一个 [1,x−1] [1, x - 1] 中的正整数 y y ,将点移动到 x−y x - y 号格子中。

  2. 除法。选择一个 [2,x] [2, x] 中的正整数 z z ,将点移动到 ⌊xz⌋ \lfloor \frac{x}{z} \rfloor 号格子中。

当点在 1 1 号格子中时无法移动,操作结束。

求将点从 n n 号格子移到 1 1 号格子的方案数,答案对给定的模数取模。

两个方案不同当且仅当有一步选择的操作或选择的数不同。例如:x=5 x = 5 时,选择操作 1 1 且 y=4 y = 4 ,或选择操作 2 2 且 z=3 或 4 或 5 z = 3\ 或\ 4\ 或\ 5 时,点都将被移到 1 1 号格子,但这些都是不同的方案。

输入格式

一行两个数,纸带长度 n n 和模数 m m 。

输出格式

一行一个数,表示答案对 m m 取模的结果。

3 998244353
5
5 998244353
25
42 998244353
793019428
787788 100000007
94810539

说明 / 提示

$2 \leqslant n \leqslant 4 \cdot 10^6, 10^8 < m < 10^9, m$ 是质数。