#CF2048I2. 凯文与谜题(困难版本)
凯文与谜题(困难版本)
I2. 凯文与谜题(困难版本)
单次测试时间限制: 秒 内存限制: 兆字节
这是该问题的困难版本。两个版本的区别在于:在这个版本中,你需要统计合法数组的数量。只有当你解决了该问题的所有版本时,才能进行 hack 操作。
凯文正在参观红色教堂,他在墙上发现了一个谜题。
对于数组 ,我们定义 表示子数组 中不同数字的个数。特别地,如果 ,我们定义 。
给定一个长度为 、仅由字母 和 组成的字符串 。如果一个非负整数数组 满足以下条件,我们称其为合法数组: 对于所有 :
- 若 ,则 ;
- 若 ,则 。
你需要统计合法数组 的数量。由于答案可能很大,你只需要输出答案对 取模后的结果。
输入格式
每个测试文件包含多组测试数据。 第一行输入一个整数 (),表示测试用例的数量。
每组测试数据的格式如下: 第一行输入一个整数 (),表示字符串 的长度。 第二行输入一个长度为 的字符串 ,仅包含大写英文字母 和 。
保证所有测试用例的 之和不超过 。
输出格式
对于每组测试数据,输出一个整数,表示合法数组的数量对 取模的结果。
样例输入
4
3
LLR
3
RRL
4
RRLR
5
LLRLR
样例输出
1
2
0
1
样例说明
所有满足条件的数组都可以在该问题的简单版本中找到。