fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int getMinOperations(long long n) {
  5. int count = 0;
  6. while (n > 0) {
  7. long long x = ceil(log2((long double)n));
  8. long long y = floor(log2((long double)n));
  9.  
  10. long long ans1 = 1LL << x;
  11. long long ans2 = 1LL << y;
  12.  
  13. n = min(abs(n - ans1), abs(n - ans2));
  14. count++;
  15. }
  16. return count;
  17. }
  18.  
  19. int main() {
  20. long long n;
  21. if (cin >> n) {
  22. cout << getMinOperations(n) << endl;
  23. }
  24. return 0;
  25. }
Success #stdin #stdout 0s 5320KB
stdin
7
stdout
2