EduBrick

D. Сумма единиц до n

2000 мс · 256 МБ · всё или ничего

Посчитайте суммарное количество единичных битов у всех чисел от 11 до nn.

Перебирать все числа нельзя: nn до 2⋅10172 \cdot 10^{17}. Считаем по битам.

Сколько чисел из [0,n][0, n] имеют единицу в бите ii? Значения этого бита меняются с периодом 2i+12^{i+1}: сначала 2i2^i нулей, потом 2i2^i единиц. Значит, полных периодов ровно ⌊n+12i+1⌋\left\lfloor \frac{n+1}{2^{i+1}} \right\rfloor, и каждый даёт 2i2^i единиц; плюс хвост длиной (n+1) mod 2i+1(n+1) \bmod 2^{i+1}, из которого единицами заняты все позиции сверх первых 2i2^i.

counti=⌊n+12i+1⌋⋅2i+max⁡(0, (n+1) mod 2i+1−2i).\mathrm{count}_i = \left\lfloor \frac{n+1}{2^{i+1}} \right\rfloor \cdot 2^i + \max\left(0,\ (n+1) \bmod 2^{i+1} - 2^i\right).

Сумма по всем битам и есть ответ. Стоит это O(log⁡n)O(\log n).

Про тип. Среднее число единичных битов у числа около log⁡2n/2\log_2 n / 2, то есть при n=2⋅1017n = 2 \cdot 10^{17} ответ порядка 5.7⋅10185.7 \cdot 10^{18} — в 32 бита не помещается, в знаковый 64-битный влезает с запасом примерно в полтора раза. Обратите внимание, что при n=1018n = 10^{18} ответ был бы около 3⋅10193 \cdot 10^{19} и не поместился бы даже в беззнаковый 64-битный тип; именно поэтому граница в условии такая.

Формат ввода

Одна строка содержит число nn (1≤n≤2⋅10171 \le n \le 2 \cdot 10^{17}).

Формат вывода

Одно число — суммарное количество единичных битов у чисел от 1 до nn.

Примеры

ввод
1
вывод
1
ввод
3
вывод
4
Войдите, чтобы отправлять решения.