AT_agc071_e.[AGC071E] Procrastinate Counter
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
对于排列 P=(P1,P2,…,PN)(即 1,2,…,N 的排列),我们定义长度为 N 的整数序列 f(P) 如下:
-
初始化整数序列 X 为 X=(P1,P2,…,PN),并持续对 X 进行以下操作,直到 X 成为单调递增序列。可以证明,对于任意排列 P,X 经过有限次操作后一定会变为单调递增序列。
- 找到满足 Xi>Xi+1 的最小下标 i(1≤i<N),记为 k。将 X 的第 k 项移动到末尾。更准确地说,将 X 替换为 (X1,X2,…,Xk−1,Xk+1,Xk+2,…,XN,Xk)。
记整数 x 在整个操作过程中被移动到末尾的次数为 Cx,则定义 f(P)=(C1,C2,…,CN)。
请计算所有可能的 f(P) 的种类数对素数 M 取模后的结果。
输入格式
输入从标准输入按以下格式给出:
N M
输出格式
输出答案。
输入输出样例
输入#1
4 998244353
输出#1
8
输入#2
71 998244353
输出#2
473972314
输入#3
300 923223991
输出#3
333532467
说明/提示
约束条件
- 1≤N≤500
- 108≤M≤109
- M 是素数
- 输入中的所有值均为整数
样例解释 #1
例如,当 P=(1,4,3,2) 时,初始化的 X=(1,4,3,2),操作过程如下:
- 由于 X1≤X2 但 X2>X3,将 X2=4 移动到末尾,X 变为 (1,3,2,4)。
- 将 X2=3 移动到末尾,X 变为 (1,2,4,3)。
- 将 X3=4 移动到末尾,X 变为 (1,2,3,4)。
此时,元素 1,2,3,4 被移动到末尾的次数分别为 0,0,1,2 次,因此 f(P)=(0,0,1,2)。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?