βCount Total Set Bits
Brute Force Solution
int countSetBits(const int &num) {
int res = 0;
for(int i = 0; i < 32; i++)
res += ((num & (1 << i)) != 0);
return res;
}
int Solution::solve(int A) {
int res = 0;
for(int i = 1; i <= A; i++)
res += countSetBits(i);
return res;
}
Time Complexity: β
Space Complexity: β
Optimal Solution
long long largestPower(long long A) {
int res = 0;
while((1 << res) <= A)
res++;
return res - 1;
}
long long getCount(long long A) {
if(A == 0)
return 0;
long long x = largestPower(A);
return x * (1 << (x - 1)) + A - (1 << x) + 1 + getCount(A - (1 << x));
}
int Solution::solve(int A) {
long long res = getCount(A);
return res % 1000000007;
}
Last updated