#ABC129E. 和等于异或

和等于异或

和等于异或

题目描述

给定用二进制表示的正整数 LL

求满足以下条件的非负整数对 (a,b)(a, b) 有多少个:

  • a+bLa + b \le L
  • a+b=a XOR ba + b = a \text{ XOR } b

不过,这个值可能非常大,请输出它除以 109+710^9 + 7 的余数。

关于 XOR:

整数 A,BA, B 的按位异或 A XOR BA \text{ XOR } B 定义如下。

A XOR BA \text{ XOR } B 写成二进制时,2k2^k(k0k \ge 0)位上的数字是:当 A,BA, B 写成二进制时 2k2^k 位上的数字中只有一个是 11 时为 11,否则为 00

例如,3 XOR 5=63 \text{ XOR } 5 = 6(写成二进制为:011 XOR 101=110011 \text{ XOR } 101 = 110)。

输入格式

输入按以下格式从标准输入给出:

LL

输出格式

输出满足条件的对 (a,b)(a, b) 的数量除以 109+710^9 + 7 的余数。

样例

10
5

满足条件的 (a,b)(a, b)(0,0),(0,1),(1,0),(0,2),(2,0)(0, 0), (0, 1), (1, 0), (0, 2), (2, 0)55 个。

1111111111111111111
162261460

数据范围

  • LL 用二进制表示给出,首位字符必定是 11
  • 1L<2100,0011 \le L \lt 2^{100,001}
难度 提高
通过率 100%
尝试 1
已通过 1
ID
1720
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签