#CF2018F3. 破城者计数(困难版)
破城者计数(困难版)
F3. 破城者计数(困难版)
每个测试点的时间限制: 秒
每个测试点的内存限制: MB
NightHawk22 - Isolation
⠀
这是本题的困难版本。在三个版本中, 的限制和时间限制不同。只有当所有版本的题目都通过后,你才能进行 hack。
本题是 Problem D1B 的叙述:
有 个城市排成一行,编号为 ,从左到右。
在时刻 ,你恰好征服一个城市,称为起始城市。
在时刻 ,你可以选择一个与已征服区域相邻的城市并将其征服。
如果你对于每个 ,征服城市 的时刻都不晚于 ,则获胜。获胜策略是否存在,可能取决于起始城市。
问:有多少个起始城市可以让你获胜?
对于每个 ,统计满足如下条件的正整数数组 的个数:
- 对每个 ,有 ;
- 问题 D1B 的答案是 。
答案可能非常大,你需要模给定的质数 输出。
输入
每个测试点包含多个测试用例。第一行包含测试用例数 ()。接下来每个测试用例的描述如下。
每个测试用例只有一行,包含两个整数 (,, 是质数)。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出 个整数:第 个整数应表示 时满足条件的数组个数。
示例输入
11
1 998244353
2 998244353
3 998244353
4 998244353
5 998244353
6 998244353
7 998244353
8 998244353
9 998244353
10 102275857
10 999662017
示例输出
0 1
1 2 1
14 7 4 2
183 34 19 16 4
2624 209 112 120 48 12
42605 1546 793 992 468 216 36
785910 13327 6556 9190 4672 2880 864 144
16382863 130922 61939 94992 50100 36960 14256 4608 576
382823936 1441729 657784 1086596 583344 488700 216000 96480 23040 2880
20300780 17572114 7751377 13641280 7376068 6810552 3269700 1785600 576000 144000 14400
944100756 17572114 7751377 13641280 7376068 6810552 3269700 1785600 576000 144000 14400
注
在第一个测试用例中:
- 有 个好的起始城市的数组:。
在第二个测试用例中:
- 有 个好的起始城市的数组:;
- 有 个好的起始城市的数组:;
- 有 个好的起始城市的数组:。
在第三个测试用例中:
- 有 个好的起始城市的数组:$[1,1,1], [1,1,2], [1,1,3], [1,2,1], [1,2,2], [1,3,1], [1,3,2], [2,1,1], [2,1,2], [2,2,1], [2,2,2], [2,3,1], [2,3,2], [3,1,1]$;
- 有 个好的起始城市的数组:$[1,2,3], [1,3,3], [2,1,3], [3,1,2], [3,1,3], [3,2,1], [3,3,1]$;
- 有 个好的起始城市的数组:;
- 有 个好的起始城市的数组:。