CFCF2172D.Divisor Card Game
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在台湾,许多数学教师设计了棋盘与卡牌类游戏,帮助学生理解复杂的数学概念。近日,一款特别的卡牌游戏在小学和中学教师之间广受欢迎,因为它不仅能有效帮助学生掌握约数和倍数的概念,同时对于师生都极具趣味性。
游戏的规则如下:教师准备 n 张不同的卡牌,编号为 1 到 n。第 i 张卡牌上写有整数 ai,并且整数 a1,a2,…,an 严格递增。
有 m 位学生,编号为 1 到 m,参与游戏。游戏开始前,每位学生分到一组非空的不相交卡牌子集。任意两名学生分到的卡牌没有重合,且至少有一张卡牌未被分配。
记初始时未被分配的卡牌数量为 k。游戏共进行 k 轮。每轮依次进行以下步骤:
- 教师从剩余未分配的卡牌中均匀随机选出一张,公开该卡牌。记这张卡牌上写的整数为 c。
- 每位学生同时从自己手中选择恰好一张卡牌。
- 该牌的归属规则如下:
- 对所有学生选出的卡牌,找出卡牌值可以被 c 整除的那些。
- 若存在至少一张满足条件的卡牌,则选出其中值最小的那一张,对应的学生获得本轮公开的卡牌,并将其加入自己的集合。
- 若没有任何选出的卡牌满足能被 c 整除,则该卡牌弃置(无人获得)。弃置的卡牌不会再出现在后续轮次。
每位学生在整个游戏过程中均采用相同的策略:
- 如果学生手中至少有一张卡牌值能够被 c 整除,则选择其中值最小的那张;
- 否则,选择手中值最小的卡牌。
假设所有学生始终按照上述策略出牌,求游戏结束后每位学生期望拥有的卡牌数量。
输入格式
第一行包含两个整数 n 和 m,分别表示卡牌总数和学生人数。
第二行包含 n 个整数 a1,a2,…,an,其中 ai 为第 i 张卡牌上的整数。
第三行包含 n 个整数 b1,b2,…,bn,其中 bi 表示第 i 张卡牌开始时的归属关系:若 bi=0,则归属于第 bi 位学生,若 bi=0,则为未分配。
- 1≤m<n≤600
- 1≤ai≤1018
- 0≤bi≤m
- 对于所有 1≤i<n,有 ai<ai+1
- 对 j=0,1,…,m,至少存在一个 i 使得 bi=j
输出格式
输出 m 个数,第 i 个数表示第 i 位学生在游戏结束时期望拥有的卡牌数。
可以证明,答案可表示为一个分数 qp,其中 q 不是 998244353 的倍数。你需要输出 p×q−1mod998244353,其中 q−1 表示 q 在 998244353 下的乘法逆元。
输入输出样例
输入#1
5 2 1 2 3 4 5 0 0 1 2 1
输出#1
499122179 499122179