[ABC050D] Xor Sum

题意翻译

## 题目描述 给出正整数$N$. 求出整数对$u$和$v$ $(0≤u,v≤N)$的数目,使得存在两个非负整数$a$和$b$满足$a\ xor\ b = u$和$a\ +\ b= v$。这里,$xor$表示按位异或。 要求对答案取模$10^9 + 7$。 ## 输入输出格式 ### 输入格式 一个正整数$N$ ### 输出格式 满足条件的$u,v$的个数,对$10^9+7$取模 ## 数据范围: $N<=10^{18}$

题目描述

[problemUrl]: https://atcoder.jp/contests/abc050/tasks/arc066_b 正の整数 $ N $ が与えられます。 $ 2 $ つの整数 $ u,v(0≦u,v≦N) $ であって、ある非負整数 $ a,b $ が存在して、$ a $ $ xor $ $ b=u $、$ a+b=v $ となるようなものが何通りあるかを求めてください。 ここで、$ xor $ はビットごとの排他的論理和を表します。 なお、答えは非常に大きくなることがあるので、$ 10^9+7 $ で割った余りを求めてください。

输入输出格式

输入格式


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

输出格式


ありうる $ 2 $ 数の組が何通りあるかを求め、$ 10^9+7 $ で割った余りを出力せよ。

输入输出样例

输入样例 #1

3

输出样例 #1

5

输入样例 #2

1422

输出样例 #2

52277

输入样例 #3

1000000000000000000

输出样例 #3

787014179

说明

### 制約 - $ 1≦N≦10^{18} $ ### Sample Explanation 1 $ u,v $ としてありうるものは、以下の $ 5 $ 通りです。 - $ u=0,v=0 $( $ a=0,b=0 $ とすると、$ 0 $ $ xor $ $ 0=0 $、$ 0+0=0 $ となります。) - $ u=0,v=2 $( $ a=1,b=1 $ とすると、$ 1 $ $ xor $ $ 1=0 $、$ 1+1=2 $ となります。) - $ u=1,v=1 $( $ a=1,b=0 $ とすると、$ 1 $ $ xor $ $ 0=1 $、$ 1+0=1 $ となります。) - $ u=2,v=2 $( $ a=2,b=0 $ とすると、$ 2 $ $ xor $ $ 0=2 $、$ 2+0=2 $ となります。) - $ u=3,v=3 $( $ a=3,b=0 $ とすると、$ 3 $ $ xor $ $ 0=3 $、$ 3+0=3 $ となります。)