아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

타냐, 공, 그리고 <<배타적 논리합>>

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

요약
1부터 n까지 정수의 모든 순서 없는 쌍에 대한 비트 XOR 값의 합을 10^9+7로 나눈 나머지를 구한다. n은 최대 10^9이다.
난이도

보통10점 중 7점

유형
비트 연산, 수학, 조합론, 분할 정복
정답자
아직 제출이 없습니다

문제

타냐는 공 nn개를 가지고 있었고, 11부터 nn까지 번호를 붙였다. 하지만 안타깝게도 타냐는 모든 공을 강에 빠뜨렸고, 크게 낙담했다.

그녀를 위로하기 위해 오빠 세료자는 타냐에게 재미있는 수학 놀이를 제안했다. 공 번호들의 모든 쌍에 대한 배타적 논리합의 합을 구하는 것이다.

두 수의 배타적 논리합은 ⊕\oplus로 표기하며, 파스칼의 <<xor>> 연산이나 다른 언어의 <<\char 94>> 연산에 해당한다. 두 정수 x⊕yx \oplus y를 계산하려면, 각 수를 이진법으로 나타내고, ii번째 자리가 xx와 yy 중 정확히 하나에서 11이면 결과의 ii번째 자리를 11로 한다. 예를 들어, 3⊕2=112⊕102=12=13 \oplus 2 = 11_2 \oplus 10_2 = 1_2 = 1, 17⊕5=100012⊕1012=101002=2017 \oplus 5 = 10001_2 \oplus 101_2 = 10100_2 = 20이다.

타냐를 도와주자! 그녀의 공 번호들의 모든 쌍에 대한 배타적 논리합의 합을 구하라. 타냐는 큰 수를 좋아하지 않으므로, 답은 109+710^9 + 7로 나눈 나머지를 출력해야 한다.

예를 들어, 타냐가 공 33개를 가지고 있었다면, 구하는 값은 (1⊕2)+(1⊕3)+(2⊕3)=3+2+1=6(1 \oplus 2) + (1 \oplus 3) + (2 \oplus 3) = 3 + 2 + 1 = 6이다.

입력

첫째 줄에 수 nn이 주어진다. nn은 타냐가 가진 공의 개수이다 (1≤n≤1091 \le n \le 10^9).

출력

그녀의 공 번호들의 모든 쌍에 대한 배타적 논리합의 합을 109+710^9 + 7로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    3
    
    예상 출력
    6