#P3683. 蒙特莫特数(Montmort Number)

蒙特莫特数(Montmort Number)

蒙特莫特数(Montmort Number)

问题描述

ak a_k 错位排列数(derangement number),即大小为 k k 的排列 p p 满足对所有 i i pii p_i \ne i 的个数。
给定整数 N N 和模数 M M ,对每个 i=1,2,,N i = 1, 2, \dots, N ,输出

bi=aimodM,b_i = a_i \bmod M,

其中 ai a_i 是第 i i 个蒙特莫特数(也称错排数)。

错排数递推公式:

$$a_0 = 1,\quad a_1 = 0,\quad a_k = (k-1)(a_{k-1} + a_{k-2}) \quad (k \ge 2)$$

或闭式:

$$a_k = \left\lfloor \frac{k!}{e} + \frac{1}{2} \right\rfloor$$

约束条件

  • 1N106 1 \leq N \leq 10^6
  • 1M109 1 \leq M \leq 10^9

输入格式

N MN\ M

输出格式

b1 b2  bNb_1\ b_2\ \cdots\ b_N

10 100
 0 1 2 9 44 65 54 33 96 61
20 998244353
 0 1 2 9 44 265 1854 14833 133496 1334961 14684570 176214841 294304226 127281753 910981941 600290115 222488424 11814221 224470198 496426549