CF1089I.Interval-Free Permutations

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

考虑一个由 11 到 nn 的整数构成的排列 p1,p2,…,pnp_1, p_2, \dots, p_n。我们称排列中的一个子段 pl,pl+1,…,pr−1,prp_l, p_{l+1}, \dots, p_{r-1}, p_r 为一个区间,当且仅当它是某一组连续整数的重排。例如,排列 (6,7,1,8,5,3,2,4)(6,7,1,8,5,3,2,4) 包含区间 (6,7)(6,7)、(5,3,2,4)(5,3,2,4)、(3,2)(3,2) 等。

每个排列都包含一些平凡区间——即整个排列本身和每一个单独的元素。我们称一个排列为无区间排列(interval-free),如果它没有非平凡区间。换句话说,无区间排列不包含长度在 22 到 n−1n-1 之间的区间。

你的任务是,计算长度为 nn 的无区间排列的个数,并对质数 pp 取模。

输入格式

输入的第一行包含两个整数 tt(1≤t≤4001 \le t \le 400)和 pp(108≤p≤10910^8 \le p \le 10^9),分别表示测试用例的数量和取模的质数。接下来的 tt 行,每行包含一个整数 nn(1≤n≤4001 \le n \le 400),表示排列的长度。

输出格式

对于每个测试用例,输出一个整数,表示长度为 nn 的无区间排列的个数,对 pp 取模后的结果。

输入输出样例

  • 输入#1

    4 998244353
    1
    4
    5
    9
    

    输出#1

    1
    2
    6
    28146
    
  • 输入#2

    1 437122297
    20
    

    输出#2

    67777575
    

说明/提示

对于 n=1n=1,唯一的排列是无区间排列。对于 n=4n=4,有两个无区间排列,分别为 (2,4,1,3)(2,4,1,3) 和 (3,1,4,2)(3,1,4,2)。对于 n=5n=5,有 (2,4,1,5,3)(2,4,1,5,3)、(2,5,3,1,4)(2,5,3,1,4)、(3,1,5,2,4)(3,1,5,2,4)、(3,5,1,4,2)(3,5,1,4,2)、(4,1,3,5,2)(4,1,3,5,2) 和 (4,2,5,1,3)(4,2,5,1,3) 六种。我们不会列出 n=9n=9 时的全部 2814628146 个无区间排列,但例如 (4,7,9,5,1,8,2,6,3)(4,7,9,5,1,8,2,6,3)、(2,4,6,1,9,7,3,8,5)(2,4,6,1,9,7,3,8,5)、(3,6,9,4,1,5,8,2,7)(3,6,9,4,1,5,8,2,7) 和 (8,4,9,1,3,6,2,7,5)(8,4,9,1,3,6,2,7,5) 都是无区间排列。

当 n=20n=20 时,无区间排列的精确数量为 264111424634864638264111424634864638。

由 ChatGPT 4.1 翻译

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

首页