01串
题号:NC308526
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个由 0, 1, 2, 3 \dots 的二进制表示拼接而成的长度无限的 01 串。其前若干位形如 011011100101110111\dots

请求出这个串的前 x 位里有多少个 1

输入描述:

输入的第一行包含一个正整数 x

- 对于所有评测用例,1 \leq x \leq 10^{18}

输出描述:

输出一行包含一个整数表示答案。
示例1

输入

复制
7

输出

复制
5

说明

给定的串的前 7 位为 0110111