测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A6583. 「联合省选 2022」卡牌

编程题 省选/NOI-
知识点

题目描述

小 A 有 $n$ 张卡牌,编号为 $1, 2, \ldots , n$。每张卡牌上写着一个正整数,第 $i$ 张卡牌上的正整数为 $s_i$。

现在有 $m$ 轮游戏,第 $i$ 轮游戏会给出 $c_i$ 个质数,小 A 需要选择任意多张卡牌,使得这些卡牌上面的正整数的乘积能被该轮游戏给出的每个质数整除。

这当然难不倒小 A,于是他开始思考一个更难的问题,对于每一轮游戏,他有多少
种卡牌的选法。这给小 A 整不会了,于是他只能来求助你,你只需要告诉他答案模 $998244353$ 的值即可。两种选法 A 和 B 互不相同当且仅当存在一张卡牌在 A 中被选择但在 B 中未被选择或者存在一张卡牌在 B 中被选择但在 A 中未被选择。注意:牌面上的数字相同但编号不相同的两张卡牌被视为不同的卡牌。

输入格式

从文件 card.in 中读入数据。

第一行一个正整数 $n$,表示卡牌数量。

第二行 $n$ 个正整数 $s_i$,表示每张卡牌上写的数字。

第三行一个正整数 $m$,表示游戏轮数。

接下来 $m$ 行,每行第一个正整数 $c_i$,表示该轮游戏给出的质数个数,接下来 $c_i$ 个质数 $p_{i,j}$,表示该轮游戏给出的所有质数。数据保证 $\sum_i c_i \le 18000$,即所有 $c_i$ 之和不超过 $18000$。

输出格式

输出到文件 card.out 中。

输出 $m$ 行,每行一个整数,第 $i$ 行表示第 $i$ 轮游戏的方案数模 $998244353$ 的值。

输入输出样例

输入 #1
5
10 2 10 5 46
4
2 2 5
2 2 23
1 3
1 23
输出 #1
27
16
0
16

说明/提示

对于 $100\%$ 的数据,$n \le 10^6, s_i \le 2000, m \le 1500, \sum_i c_i \le 18000, 2 \le p_{i,j} \le 2000$。

| 测试点 | $n\le$ | $m\le$ | $\sum_i c_i$ | 其他限制 |
| :---------: | :-----: | :----: | :----------: | :----------: |
| $1,2$ | $10$ | $10$ | $20$ | $s_i\le 30$ |
| $3\sim 5$ | $10$ | $20$ | $50$ | 无 |
| $6\sim 8$ | $10^6$ | $1500$ | $10000$ | $s_i\le 30$ |
| $9\sim 11$ | $10000$ | $1000$ | $5000$ | $s_i\le 500$ |
| $12,13$ | $1000$ | $100$ | $1000$ | 无 |
| $14\sim 17$ | $5000$ | $600$ | $7000$ | 无 |
| $18\sim 20$ | $10^6$ | $1500$ | $18000$ | 无 |
上一题 去做题 下一题