CF2199I Strange Process

题目描述

给定三个数组: - 数组 $a$,初始时由 $n$ 个 $1$ 组成; - 数组 $b$,初始时由 $m$ 个 $0$ 组成; - 数组 $c$,由 $m$ 个 $1$ 到 $50$ 之间的整数构成。 我们对这些数组进行如下操作。该过程包含 $m$ 个阶段。在第 $i$ 阶段,进行以下操作: 1. 首先,对于数组 $a$ 的每个元素,独立地选择以下三种操作之一:将其乘以某个质数,或除以某个质数(不能除以不能整除该数的质数),或保持不变。对于数组 $a$ 的不同元素,可以选择不同的操作或者不同的质数; 2. 然后,可以跳过此步,或者任选一个 $k$ 满足 $a_k = c_i$,并将 $b_i = k$。 如果最终经过上述过程得到的数组 $b$ 为长度为 $m$ 的数组,并且每个元素都是 $0$ 到 $n$ 的整数(即 $b$ 数组可能的取值范围是 $0$ 到 $n$),那么称该数组 $b$ 是“可达数组”。 你的任务是计算有多少个“可达数组”,结果对 $998244353$ 取模。

输入格式

第一行包含两个整数 $n$ 和 $m$,满足 $1 \leq n, m \leq 10^4$。 第二行包含 $m$ 个整数 $c_1, c_2, \dots, c_m$,满足 $1 \leq c_i \leq 50$。

输出格式

输出一个整数,表示可达数组的数量,结果对 $998244353$ 取模。

说明/提示

由 ChatGPT 5 翻译