#codefestival2017qualcf. [code_festival_2017_qualc_f]Three Gluttons
[code_festival_2017_qualc_f]Three Gluttons
问题陈述
三个人,A、B和C一起吃寿司。开始时,有片寿司,编号从到。其中,是的倍数。
这三个人对寿司有喜好和厌恶。A的喜好由表示,是从到的整数的排列。对于每个(),A的第个最喜欢的寿司是第个寿司。类似地,B和C的喜好由和表示,也是从到的整数的排列。
这三个人重复以下动作,直到所有的寿司被消耗完或发生争斗(稍后描述):
- 每个人A、B和C在剩余的寿司中找到自己最喜欢的一片寿司。分别将这些寿司标记为、和。如果、和都不相同,则A、B和C分别吃掉寿司、和。否则,发生争斗。
给定A和B的喜好,和,有多少种C的喜好可以使所有的寿司都被消耗完而没有发生争斗?以为模计算数量。
约束条件
- 是的倍数。
- 和都是从到的整数的排列。
输入
输入以以下格式从标准输入给出:
输出
打印C的喜好数量,使得所有寿司都被消耗完而没有发生争斗,以为模。
示例输入1
3
1 2 3
2 3 1
示例输出1
2
答案是两种,$(c_1,\\ c_2,\\ c_3) = (3,\\ 1,\\ 2),\\ (3,\\ 2,\\ 1)$。在这两种情况下,A、B和C将分别吃掉寿司、和,不再有寿司剩余。
示例输入2
3
1 2 3
1 2 3
示例输出2
0
无论是什么排列,A和B都会试图吃掉寿司,导致发生争斗。
示例输入3
6
1 2 3 4 5 6
2 1 4 3 6 5
示例输出3
80
例如,如果$(c_1,\\ c_2,\\ c_3,\\ c_4,\\ c_5,\\ c_6) = (5,\\ 1,\\ 2,\\ 6,\\ 3,\\ 4)$,A、B和C将分别先后吃掉寿司、和,然后分别吃掉寿司、和,不再有寿司剩余。
示例输入4
6
1 2 3 4 5 6
6 5 4 3 2 1
示例输出4
160
示例输入5
9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
示例输出5
33600