Description
DreamGrid 刚刚从他的虚拟机中找到了两个二进制序列 s1,s2,…,sn 和 t1,t2,…,tn(对于所有 1≤i≤n,si,ti∈{0,1})!他想要执行下面描述的操作恰好两次,使得在两次操作后,对于所有 1≤i≤n,都有 si=ti。 操作是:选择两个整数 l 和 r(1≤l≤r≤n),将所有 l≤i≤r 的 si 变为 (1−si)。 DreamGrid 想知道有多少种方法可以做到这一点。 我们使用以下规则来确定两种方法是否不同: - 设 A=(a1,a2,a3,a4),其中 1≤a1≤a2≤n,1≤a3≤a4≤n,表示 DreamGrid 为第一次操作选择整数 a1 和 a2,为第二次操作选择整数 a3 和 a4; - 设 B=(b1,b2,b3,b4),其中 1≤b1≤b2≤n,1≤b3≤b4≤n,表示 DreamGrid 为第一次操作选择整数 b1 和 b2,为第二次操作选择整数 b3 和 b4。 - 如果存在整数 k(1≤k≤4)使得 akebk,则 A 和 B 被认为是不同的。
有多个测试用例。输入的第一行包含一个整数 T,表示测试用例的数量。对于每个测试用例: 第一行包含一个整数 n(1≤n≤106),表示两个二进制序列的长度。 第二行包含一个长度为 n 的字符串 s1s2…sn(si∈{‘0’,‘1’}),表示第一个二进制序列。 第三行包含一个长度为 n 的字符串 t1t2…tn(ti∈{‘0’,‘1’}),表示第二个二进制序列。 保证所有测试用例中 n 的总和不超过 107。
对于每个测试用例,输出一个整数表示答案。
3
1
1
0
2
00
11
5
01010
00111
0
2
6
Hint
对于第二个样例测试用例,有两个有效的操作对:(1,1,2,2) 和 (2,2,1,1)。 对于第三个样例测试用例,有六个有效的操作对:(2,3,5,5),(5,5,2,3),(2,5,4,4),(4,4,2,5),(2,4,4,5) 和 (4,5,2,4)。
题面翻译由 ChatGPT-4o 提供。