Logo
(追記) (追記ここまで)

19762번 - Таня, мячи и <<исключающее или>> 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 512 MB64466.667%

문제

У Тани было $n$ мячей, она пронумеровала их от 1ドル$ до $n$. Но, к сожалению, Таня уронила все мячи в реку и сильно расстроилась.

Чтобы утешить ее, старший брат Сережа предложил Тане забавное математическое развлечение: посчитать сумму попарных исключающих или от номеров ее мячей.

Исключающее или двух чисел обозначается как $\oplus$ и соответствует операции <<xor>> в паскале или <<\char 94>> в других языках. Чтобы вычислить $x \oplus y$ для двух целых чисел, необходимо сделать следующее: представить каждое из чисел в двоичной системе счисления и сделать $i$-й разряд результата единицей, если он равен единице ровно в одном из чисел $x$ и $y$. Например, 3ドル \oplus 2 = 11_2 \oplus 10_2 = 1_2 = 1,ドル 17ドル \oplus 5 = 10001_2 \oplus 101_2 = 10100_2 = 20$.

Помогите Тане! Посчитайте сумму по всем парам ее мячей исключающих или их номеров. Таня не любит большие числа, так что ответ необходимо вывести по модулю 10ドル^9 + 7$.

Например, если у Тани было 3ドル$ мяча, то искомое значение равно $(1 \oplus 2) + (1 \oplus 3) + (2 \oplus 3) = 3 + 2 + 1 = 6$.

입력

В первой строке задано число $n$ --- количество мячей у Тани (1ドル \le n \le 10^9$).

출력

Выведите сумму по всем парам ее мячей исключающих или их номеров, взятую по модулю 10ドル^9 + 7$.

제한

예제 입력 1

3

예제 출력 1

6

힌트

출처

Olympiad > Russian Olympiad in Informatics > Russia High School Programming Contest > Russia High School Programming Contest 2016 K번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /