0부터 k까지의 정수 중에서 비트 XOR 연산에 닫혀 있는 집합의 개수를 10^9+7로 나눈 나머지를 구한다.
음이 아닌 정수로 이루어진 비어 있지 않은 집합 SSS가 다음 조건을 만족하면 완벽한 집합이라고 한다.
a∈Sa \in Sa∈S이고 b∈Sb \in Sb∈S인 임의의 두 정수 aaa, bbb에 대해 (aaa와 bbb는 같아도 된다) a⊕b∈Sa \oplus b \in Sa⊕b∈S이다. 여기서 ⊕\oplus⊕는 비트 단위 배타적 논리합(XOR)이다.
정수 kkk가 주어질 때, 모든 원소가 kkk 이하인 완벽한 집합의 개수를 구하라.
첫째 줄에 정수 kkk가 주어진다. (0≤k≤1090 \le k \le 10^90≤k≤109)
모든 원소가 kkk 이하인 완벽한 집합의 개수를 109+710^9 + 7109+7로 나눈 나머지를 첫째 줄에 출력한다.
k=1k = 1k=1이면 완벽한 집합은 {0}\{0\}{0}, {0,1}\{0, 1\}{0,1}의 두 개다.
k=4k = 4k=4이면 {0}\{0\}{0}, {0,1}\{0, 1\}{0,1}, {0,2}\{0, 2\}{0,2}, {0,3}\{0, 3\}{0,3}, {0,4}\{0, 4\}{0,4}, {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3}의 여섯 개다.