#abc278h. [abc278_h]make 1
[abc278_h]make 1
题目描述
一个非负整数序列 被称为是好序列,如果满足以下条件:
- 存在一个非空的(不一定是连续的)子序列 ,使得子序列 中所有元素按位异或的结果为 。
现在有一个空序列 ,以及 张卡片,每张卡片上写有介于 和 之间的整数。
你需要不断重复以下操作,直到序列 变成一个好序列:
- 你可以自由选择一张卡片,并将其上的整数追加到序列 的末尾。然后,你会将这张卡片吃掉(一旦被吃掉,就不能再选择这张卡片了)。
经过这些操作后,长度为 的序列 有多少种可能的结果?对 取模后输出结果。
什么是按位异或?非负整数 和 的按位异或运算 定义如下:
- 将 转化为二进制形式,第 个()二进制位如果 和 的第 个二进制位中只有一个为 ,则该二进制位为 ,否则为 。
例如,(二进制形式:)。
约束条件
- 和 为整数。
输入和输出
输入通过标准输入给出,格式如下:
输出答案。
样例输入 1
2 2
样例输出 1
5
经过操作后,长度为 的序列 可以有以下 种可能的结果。
样例输入 2
2022 1119
样例输出 2
293184537
样例输入 3
200000 10000000
样例输出 3
383948354