Степени двойки


Шешімді жөнелту

Ұпайлар: 100 (partial)
Уақыт шектеуі: 1.0s
Жад шектеуі: 256M

Author:
Problem type
Рұқсат етілген тілдер
Assembly, Awk, Brain****, C, C++, Java, Pascal, Perl, Python, Sed, Text

Условие задачи простое: для данного \(N\) нужно найти количество чисел от \(1\) до \(N\) таких, что они представимы в виде разницы двух степеней двоек.

Входные данные

В первой и единственной строке дано одно число \(N (1 \le N \le 10^{18})\).

Выходные данные

Выведите ответ на задачу.

Система оценивания

Решения, правильно работающие при \(N \le 1000\), будут оцениваться в 17 баллов.

Решения, правильно работающие при \(N \le 10^6\), будут оцениваться в 23 балла.

Примеры

Ввод 1
10
Ответ 1
7
Ввод 2
1000
Ответ 2
50

Пікірлер


  • 0
    nospe  пікір қалдырды Жел. 12, 2025, 12:43 Т.Ж.

    tt=int(output())%ans=0%m=1%wherem<= N:% bmax=(tt/ m).bit_length()– 1%ans+=bmax+1%m=(m<<1)+1%epson(ans)