AT_agc055_f.[AGC055F] Creative Splitting

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定整数 N, KN,\ K。

当长度为 KK 的整数序列 a=[a1, a2, …, aK]a=[a_1,\ a_2,\ \ldots,\ a_K] 满足对于所有 1≤i≤K1 \leq i \leq K,都有 1≤ai≤i1 \leq a_i \leq i 时,称 aa 为好序列。

当长度为 NKNK 的整数序列 b=[b1, b2, …, bNK]b=[b_1,\ b_2,\ \ldots,\ b_{NK}] 满足以下条件时,称 bb 为优秀序列:存在一种将 bb 分解为 NN 个长度为 KK 的(不一定连续的)子序列的方法,使得每个子序列都是好序列。

定义 f(pos, val)f(pos,\ val) 为满足 bpos=valb_{pos}=val 的优秀序列 bb 的个数。

请你对于所有 1≤pos≤NK1 \leq pos \leq NK,1≤val≤K1 \leq val \leq K,求出 f(pos, val)f(pos,\ val)。由于这些数可能非常大,请输出它们对素数 PP 取模的结果。

输入格式

输入从标准输入中给出,格式如下:

NN KK PP

输出格式

输出共 NKNK 行。第 ii 行的第 jj 个数为 (f(i, j) mod P)(f(i,\ j) \bmod P)。

输入输出样例

  • 输入#1

    2 2 965166677

    输出#1

    6 0 
    4 2 
    4 2 
    3 3

说明/提示

限制

  • 1≤N≤201 \leq N \leq 20
  • 1≤K≤201 \leq K \leq 20
  • 108≤P≤10910^8 \leq P \leq 10^9
  • PP 是素数。

样例解释 1

存在以下 66 个优秀序列。

  • [1,1,1,1][1, 1, 1, 1]:可以分为 [b1,b2],[b3,b4][b_1, b_2], [b_3, b_4]。
  • [1,1,1,2][1, 1, 1, 2]:可以分为 [b1,b2],[b3,b4][b_1, b_2], [b_3, b_4]。
  • [1,2,1,1][1, 2, 1, 1]:可以分为 [b1,b2],[b3,b4][b_1, b_2], [b_3, b_4]。
  • [1,2,1,2][1, 2, 1, 2]:可以分为 [b1,b2],[b3,b4][b_1, b_2], [b_3, b_4]。
  • [1,1,2,1][1, 1, 2, 1]:可以分为 [b1,b3],[b2,b4][b_1, b_3], [b_2, b_4]。
  • [1,1,2,2][1, 1, 2, 2]:可以分为 [b1,b3],[b2,b4][b_1, b_3], [b_2, b_4]。

由 ChatGPT 4.1 翻译

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

首页