CFCF2182D.Christmas Tree Decoration
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 n 个人决定一起装饰圣诞树。他们有 n+1 个装饰品盒子,编号从 0 到 n。最初,第 i 个盒子里有 ai 个装饰品。
我们称一个大小为 n 的排列 p(长度为 n 的数组,里面每个数字 1 到 n 各出现一次)是公平的,如果可以通过如下过程将所有装饰品都挂在树上:
- 第 p1 个人可以从盒子 0 或盒子 p1 中取一个装饰品,并挂在树上;
- 第 p2 个人可以从盒子 0 或盒子 p2 中取一个装饰品,并挂在树上;
- 以此类推;
- 第 pn 个人后,轮到第 p1 个人,如此循环,直到所有装饰品都挂完。
在这个过程中,永远不应该出现这样一种情况:第 i 个人需要挂装饰品,而盒子 0 和盒子 i 都为空。如果无法避免这样的情况,则该排列不是公平排列。如果每轮每个人都能选择从哪个盒子取装饰品,始终不出现上述情况,则该排列是公平排列。
你的任务是计算有多少个公平排列。由于答案可能很大,请输出对 998244353 取模的结果。
输入格式
第一行包含一个整数 t(1≤t≤5000),表示测试用例数量。
每个测试用例的第一行包含一个整数 n(1≤n≤50)。
第二行包含 n+1 个整数 a0,a1,…,an(0≤ai≤106)。
输出格式
对于每个测试用例,输出一行一个整数,表示公平排列的数量,对 998244353 取模。
输入输出样例
输入#1
4 3 1 2 1 0 3 1 0 2 0 1 2 5 4 6 1 4 2 1
输出#1
2 0 1 12
说明/提示
在第一个样例中,公平的排列是 [1,2,3] 和 [1,3,2]。
让我们更仔细地看看排列 [1,3,2] 的装饰过程:
- 第 p1=1 个人从盒子 1 拿一个装饰品;
- 第 p2=3 个人从盒子 0 拿一个装饰品;
- 第 p3=2 个人从盒子 2 拿一个装饰品;
- 第 p1=1 个人再次从盒子 1 拿一个装饰品。
注意,如果第 p1=1 个人第一步取的是盒子 0,那么第 p2=3 个人接下来就无法进行(因为此时盒子 0 和 3 都为空)。但由于可以避免这种情况,该排列依然是公平的。