aboutsummaryrefslogtreecommitdiff
path: root/13_bitwise_operations/counting_bits_1146.cpp
blob: 004dc1346c42af353d4d05d536b19d443f0cc081 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>

int main() {
	unsigned long long n, f, p, s{0};
	std::cin >> n;

	for (unsigned long long i = 1, m = n; i <= n; i <<= 1, m >>= 1) {
		f = i * (m / 2);
		p = (n % (2*i)) + 1;
		p = p > i ? p - i : 0;
		s += f + p;
	}
	std::cout << s << "\n";
}

Generated with cgit - Back to sebastiano.tronto.net