100 atcoder#ABC129E. [ABC129E] Sum Equals Xor

[ABC129E] Sum Equals Xor

配点 : 500500

問題文

正整数 LL が二進数表記で与えられます。 以下の条件を満たす非負整数 a,ba, b の組 (a,b)(a, b) がいくつ存在するか求めてください:

  • a+bLa + b \leq 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 \geq 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は二進数表記で与えられ、先頭文字は必ず 11 である
  • 1L<2100,0011 \leq L < 2^{100,001}

入力

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

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