CF1867B XOR Palindromes
题目描述
给出一个长度为 $n$ 的 $01$ 串(只含 $0,1$ 的字符串) $s$。定义一个数 $x$ 是好数,当仅当存在一个长度也为 $n$ 的 $01$ 串 $l$ 使得对于所有的 $s_i$ 被 $s_i\oplus l_i$ 替换后得到的 $01$ 串是一个回文串。
对于给出的一组 $n,s$ ,你需要给出一个长度为 $n+1$ 的 $01$ 串 $t$ ,$t_i=1$ 当仅当 $i$ 是一个好数。**注意,$t$ 从 $0$ 开始编号**
题目中 $\oplus$ 表示异或。
回文串指正着读反着读都相同的字符串,比如 $0110,01010,1111$ 都是回文串。
输入格式
每个测试点有多组数据。对于每个测试点,第一行为一个整数 $t$,代表有 $t (1\leq t\leq 10^5)$ 组数据。
对于每组数据,第一行为一个整数 $n (1 \leq n\leq 10^5)$。
第二行是一行长度为 $n$ 的 $01$ 串 $s$。
保证单个测试点所有 $n$ 的和不超过 $10^5$
输出格式
对于每组数据,输出一行长度为 $n+1$ 的 $01$ 串 $l$ 。
说明/提示
考虑第一个例子:
$t_2=1$ 是因为我们可以选到 $l=010100$ ,异或后 $s$ 变成 $111111$ 成为一个回文串。
$t_4=1$ 是因为我们可以选到 $l=101011$ 此时 $s$ 变成回文串 $000000$。
可以证明其他任意的 $i$ 都不满足成为 “好数” 的条件,故其他所有的位置都是 $0$。