#arc084d. [arc084_d]XorShift
[arc084_d]XorShift
题目描述
有 个非负整数写在黑板上,第 个整数是 。
Takahashi 可以任意次数、任意顺序地执行以下两种操作:
- 选择一个写在黑板上的整数(记为 )。将 写在黑板上,不擦除已选中的整数。
- 选择两个写在黑板上的整数,可以相同(记为 和 )。将它们的按位异或(XOR)结果写在黑板上,不擦除已选中的整数。
有多少不超过 的不同整数可以被写在黑板上?我们也计算最初写在黑板上的整数。由于答案可能非常大,所以计算结果对 取模。
约束条件
- ()
- 所有输入值都是整数。
- 和 ()用二进制表示法给出,并且它们的最高有效位均为 。
输入
输入以以下格式从标准输入给出:
输出
打印不超过 的不同整数可以被写在黑板上的数量。
示例输入1
3 111
1111
10111
10010
示例输出1
4
最初,黑板上写着 , 和 。在不超过 的整数中,可以写下四个整数:,, 和 。例如,可以以下列方式写下 :
- 将 乘以 ,写下 。
- 将 与 进行按位异或,写下 。
- 将 乘以 ,写下 。
- 将 与 进行按位异或,写下 。
示例输入2
4 100100
1011
1110
110101
1010110
示例输出2
37
示例输入3
4 111001100101001
10111110
1001000110
100000101
11110000011
示例输出3
1843
示例输入4
1 111111111111111111111111111111111111111111111111111111111111111
1
示例输出4
466025955
请确保对结果取模 。