#P3682. 多阶乘(Many Factorials)

多阶乘(Many Factorials)

多阶乘(Many Factorials)

问题描述

给定 T T 组测试数据。对每组,输入一个非负整数 N N ,输出 N!mod998244353 N! \bmod 998244353

约束条件

  • 1T105 1 \leq T \leq 10^5
  • 0N<998244353 0 \leq N < 998244353

输入格式

TT
N1N_1
N2N_2
:
NTN_T

输出格式

N1!mod998244353N_1! \bmod 998244353
N2!mod998244353N_2! \bmod 998244353
:
NT!mod998244353N_T! \bmod 998244353

提示:由于 T T 可达 105 10^5 ,且 N<998244353 N < 998244353 ,需预处理阶乘表至 maxN \max N (但 maxN \max N 可能接近 106 10^6 或更高)。实际中,因模数为质数 998244353 998244353 ,当 N998244353 N \ge 998244353 N!0 N! \equiv 0 ,但题目保证 N<998244353 N < 998244353 ,故最大需预处理到 max(Ni) \max(N_i) 。为高效处理,可:

  • 先读入所有 N N ,求 Nmax N_{\max}
  • 预处理 fac[0..Nmax] \text{fac}[0..N_{\max}]
  • 再依次输出。

Nmax N_{\max} 较大(如 106 10^6 ),预处理可行;若 N N 分布稀疏且最大值小,亦可动态计算。本题约束未限 N N 上界除模数外,但 T105 T \le 10^5 ,建议按最大 N N 预处理。

5
0
5
100
1234567
998244352
1
120
35305197
972177311
998244352