만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

완벽한 집합의 개수

시간 제한2초메모리 제한512 MB

요약
0부터 k까지의 정수 중에서 비트 XOR 연산에 닫혀 있는 집합의 개수를 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
비트 연산, 조합론, 동적 계획법
정답자
아직 제출이 없습니다

문제

음이 아닌 정수로 이루어진 비어 있지 않은 집합 SS가 다음 조건을 만족하면 완벽한 집합이라고 한다.

a∈Sa \in S이고 b∈Sb \in S인 임의의 두 정수 aa, bb에 대해 (aa와 bb는 같아도 된다) a⊕b∈Sa \oplus b \in S이다. 여기서 ⊕\oplus는 비트 단위 배타적 논리합(XOR)이다.

정수 kk가 주어질 때, 모든 원소가 kk 이하인 완벽한 집합의 개수를 구하라.

입력

첫째 줄에 정수 kk가 주어진다. (0≤k≤1090 \le k \le 10^9)

출력

모든 원소가 kk 이하인 완벽한 집합의 개수를 109+710^9 + 7로 나눈 나머지를 첫째 줄에 출력한다.

힌트

k=1k = 1이면 완벽한 집합은 {0}\{0\}, {0,1}\{0, 1\}의 두 개다.

k=4k = 4이면 {0}\{0\}, {0,1}\{0, 1\}, {0,2}\{0, 2\}, {0,3}\{0, 3\}, {0,4}\{0, 4\}, {0,1,2,3}\{0, 1, 2, 3\}의 여섯 개다.

예제4

  1. 예제 1

    입력
    1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3
    
    예상 출력
    5
    
  4. 예제 4

    입력
    4
    
    예상 출력
    6