配点 : 500 点
問題文
正整数 L が二進数表記で与えられます。
以下の条件を満たす非負整数 a,b の組 (a,b) がいくつ存在するか求めてください:
- a+b≤L
- a+b=a XOR b
ただし、この値は非常に大きくなることがあるので、109+7 で割った余りを出力してください。
XOR とは
整数 A,B のビットごとの排他的論理和 a XOR b は、以下のように定義されます。
a XOR b を二進数表記した際の 2k (k≥0) の位の数は、A,B を二進数表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3 XOR 5=6 となります (二進数表記すると: 011 XOR 101=110)。
制約
- Lは二進数表記で与えられ、先頭文字は必ず 1 である
- 1≤L<2100,001
入力
入力は以下の形式で標準入力から与えられる。
L
出力
条件を満たす組 (a,b) の個数を 109+7 で割った余りを出力せよ。
10
5
条件を満たす (a,b) としては (0,0),(0,1),(1,0),(0,2),(2,0) の 5 つが考えられます。
1111111111111111111
162261460