A96802.前向走

普及+/提高

官方

通过率:0%

时间限制:2.00s

内存限制:128MB

题目描述

你有一张 1×n1 \times n 的纸带,由 nn 个格子组成。初始时,有一个点在第 nn 号格子中。

如果当前点在格子 xx 上(x>1x > 1),你可以进行如下两种操作之一:

  1. 减法操作:选择一个整数 yy,满足 1≤y≤x−11 \le y \le x - 1,将点移动到格子 x−yx - y;
  2. 除法操作:选择一个整数 zz,满足 2≤z≤x2 \le z \le x,将点移动到格子 ⌊xz⌋\left\lfloor \dfrac{x}{z} \right\rfloor。

当点在 11 号格子中时,无法再进行任何操作,过程结束。

请你计算:将点从 nn 号格子移动到 11 号格子的不同方案数,并对给定的模数 mm 取模。

两个方案不同,当且仅当在某一步中,选择的操作类型或选择的数字不同。
例如,当 x=5x = 5 时:

  • 选择操作 11 且 y=4y = 4;
  • 选择操作 22 且 z=3z = 3;
  • 选择操作 22 且 z=4z = 4;
  • 选择操作 22 且 z=5z = 5;

这些都会把点移动到 11 号格子,但它们被认为是 4 种不同的方案。

输入格式

输入只有一行,包含两个整数 n,mn,m:

  • nn:纸带格子的数量;
  • mm:模数。

输出格式

输出一行一个整数,表示从格子 nn 到格子 11 的方案数对 mm 取模后的结果。

输入输出样例

  • 输入#1

    3 998244353

    输出#1

    5
  • 输入#2

    5 998244353

    输出#2

    25
  • 输入#3

    42 998244353

    输出#3

    793019428
  • 输入#4

    787788 100000007
    

    输出#4

    94810539

说明/提示

数据范围

  • 2≤n≤4×1062 \le n \le 4 \times 10^6;
  • 108<m<10910^8 < m < 10^9;
  • mm 是质数。

输入解题思路,AI测评打分。不知道怎么写?

首页