AT_abc129_e [ABC129E] Sum Equals Xor

Description

[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 $)。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ L $

Output Format

条件を満たす組 $ (a,\ b) $ の個数を $ 10^9\ +\ 7 $ で割った余りを出力せよ。

Explanation/Hint

### 制約 - $ L $は二進数表記で与えられ、先頭文字は必ず $ 1 $ である - $ 1\ \leq\ L\