[ABC129E] Sum Equals Xor
题意翻译
以二进制形式给出一个整数 $L$ ,问有多少个非负整数对 $(a, b)$ 满足:$a+b = a \oplus b \le L$。答案对 $10^9 + 7$ 取模。
题目描述
[problemUrl]: https://atcoder.jp/contests/abc129/tasks/abc129_e
正整数 $ L $ が二進数表記で与えられます。 以下の条件を満たす非負整数 $ a,\ b $ の組 $ (a,\ b) $ がいくつ存在するか求めてください:
- $ a\ +\ b\ \leq\ L $
- $ a\ +\ b\ =\ a\ \text{\ XOR\ }\ b $
ただし、この値は非常に大きくなることがあるので、$ 10^9\ +\ 7 $ で割った余りを出力してください。
XOR とは
整数 $ A,\ B $ のビットごとの排他的論理和 $ a\ \text{\ XOR\ }\ b $ は、以下のように定義されます。
$ a\ \text{\ XOR\ }\ b $ を二進数表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ A,\ B $ を二進数表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。 例えば、$ 3\ \text{\ XOR\ }\ 5\ =\ 6 $ となります (二進数表記すると: $ 011\ \text{\ XOR\ }\ 101\ =\ 110 $)。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ L $
输出格式
条件を満たす組 $ (a,\ b) $ の個数を $ 10^9\ +\ 7 $ で割った余りを出力せよ。
输入输出样例
输入样例 #1
10
输出样例 #1
5
输入样例 #2
1111111111111111111
输出样例 #2
162261460
说明
### 制約
- $ L $は二進数表記で与えられ、先頭文字は必ず $ 1 $ である
- $ 1\ \leq\ L\ <\ 2^{100,001} $
### Sample Explanation 1
条件を満たす $ (a,\ b) $ としては $ (0,\ 0),\ (0,\ 1),\ (1,\ 0),\ (0,\ 2),\ (2,\ 0) $ の $ 5 $ つが考えられます。