因为是
和
异或来的,并且
,所以我们可以知道
的位数等于
的位数,而
的位数小于
的位数,具体是多少不知道。而一旦
的位数确定了,
和
的各比特位在异或时的对应关系、在回文时的对应关系也就确定了。所以我们只需要枚举
的位数,然后算算算,这题就做完了。
具体来说,当的长度固定时,我们首先可以把
切成两段,
,其中
,
指字符串拼接。
要拼接的回文串就是,所以
和
应该对称,
自身需要回文。
,这个要匹配
,我们只需分别考虑
是否匹配
的前半段,和
是否匹配
的后半段。
那就对每处对称的位置,枚举取值,统计满足匹配要求的方案数。把不同位置的方案数相乘。
最后把枚举的的不同长度的方案数相加即为答案。
注意的最高位必须是
,注意对称位置重合时特判。