Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- long long n;
- cin >> n;
- if (n == 1) cout << 1;
- else
- {
- long long count = 1;
- int i = 1;
- long long sum = n - 1;
- while (sum - (long long)pow(2, i) > 0)
- {
- sum -= (long long)pow(2, i);
- i++;
- }
- for (int j = i - 1; j >= 1; j--)
- count += pow(2, j) + j * pow(2, j) / 2;
- if (sum == 0) cout << count;
- else
- {
- count += (long long)sum / 2 + sum;
- for (int j = i; j >= 2; j--)
- {
- count += (long long)(sum / pow(2, j)) * (long long)pow(2, j - 1);
- if ((sum % (long long)pow(2, j)) > (long long)pow(2, j - 1))
- {
- count += (long long)(sum % (long long)pow(2, j - 1));
- }
- }
- cout << count;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment