C. 余影排列

    传统题 1000ms 256MiB

余影排列

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

余影排列

题目描述

给定两个整数 n,mn,m,以及一个长度为 n1n-1 的整数序列 d1,d2,,dn1d_1,d_2,\dots,d_{n-1}

你需要计算有多少个 11nn 的排列 p1,p2,,pnp_1,p_2,\dots,p_n,满足对于所有 1i<n1 \le i < n,都有:

(pi+1pi)modm=di(p_{i+1}-p_i)\bmod m=d_i

这里 (xmodm)(x\bmod m) 表示 xx 除以 mm 后位于 00m1m-1 之间的余数。

答案对 998244353998244353 取模。

两个排列不同,当且仅当至少存在一个位置上的数不同。

输入格式

第一行输入一个整数 TT,表示测试数据组数。

对于每组测试数据:

第一行输入两个整数 n,mn,m

第二行输入 n1n-1 个整数 d1,d2,,dn1d_1,d_2,\dots,d_{n-1}

数据范围

对于所有测试数据,保证:

1T2×1051 \le T \le 2 \times 10^5 2n2×1052 \le n \le 2 \times 10^5 1m2×1051 \le m \le 2 \times 10^5 0di<m0 \le d_i < m

所有测试数据的 n+mn+m 之和不超过 2×1052 \times 10^5

所有输入数据均为整数。

输出格式

对于每组测试数据,输出一行一个整数,表示满足条件的排列数量。

输入输出样例 #1

输入 #1

5
4 3
1 1 1
5 2
1 1 1 1
5 3
0 0 0 0
6 4
1 2 1 2 1
6 3
1 2 1 2 1

输出 #1

2
12
0
4
0

说明/提示

第一组中,如果 p11(mod3)p_1 \equiv 1 \pmod 3,那么四个位置需要的余数依次为:

1,2,0,11,2,0,1

在数字 1,2,3,41,2,3,4 中,余数 00 的数有 33,余数 11 的数有 1,41,4,余数 22 的数有 22。数量正好匹配。

余数为 11 的两个位置可以放入 1,41,4,顺序任意,所以这一种首项余数贡献 22 个排列。其他首项余数不合法,因此答案为 22

第二组中,数字 1,2,3,4,51,2,3,4,5 在模 22 意义下,奇数有 33 个,偶数有 22 个。

差分全为 11,所以位置余数会交替变化。

如果首项余数为 00,位置余数依次为:

0,1,0,1,00,1,0,1,0

这需要偶数 33 个、奇数 22 个,与数字 1,2,3,4,51,2,3,4,5 的余数分布不匹配。

如果首项余数为 11,位置余数依次为:

1,0,1,0,11,0,1,0,1

这正好需要奇数 33 个、偶数 22 个,与数字 1,2,3,4,51,2,3,4,5 的余数分布匹配。

因此只有一种首项余数合法。奇数桶内部有 3!3! 种排列,偶数桶内部有 2!2! 种排列,所以答案为:

3!×2!=123! \times 2! = 12

第三组中,要求所有位置上的数模 33 后余数相同,但 1,2,3,4,51,2,3,4,5 不可能全部同余,所以答案为 00

【睿爸信奥】入门组算法周赛(20260606)

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-6-6 0:00
结束于
2026-6-13 0:00
持续时间
4 小时
主持人
参赛人数
22