因为异或来的,并且,所以我们可以知道的位数等于的位数,而的位数小于的位数,具体是多少不知道。而一旦的位数确定了,的各比特位在异或时的对应关系、在回文时的对应关系也就确定了。所以我们只需要枚举的位数,然后算算算,这题就做完了。

具体来说,当的长度固定时,我们首先可以把切成两段,,其中指字符串拼接。

要拼接的回文串就是,所以应该对称,自身需要回文。

,这个要匹配,我们只需分别考虑是否匹配的前半段,和是否匹配的后半段。

那就对每处对称的位置,枚举取值,统计满足匹配要求的方案数。把不同位置的方案数相乘。

最后把枚举的的不同长度的方案数相加即为答案。

注意的最高位必须是,注意对称位置重合时特判。

我的代码