Advertisement
intagaming

Untitled

Dec 7th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. unsigned divByTwo(unsigned i) {
  5.     return floor(log(i)/log(2));
  6. }
  7.  
  8. unsigned integerReplacement(unsigned i) {
  9.     int num = 0;
  10.     while (i != 1) {
  11.         int div;
  12.         if(i % 2 != 0) {
  13.             num++;
  14.             if((i-1)/pow(2,divByTwo(i-1)) <= (i+1)/pow(2,divByTwo(i+1))) {
  15.                 i -= 1;
  16.             } else i += 1;
  17.         }
  18.         div = floor(log(i)/log(2));
  19.         num += div;
  20.         double temp = i / pow(2,div);
  21.         if(temp > 1 && temp / 2.0 != 0) {
  22.             ++num;
  23.         }
  24.         i = temp;
  25.     }
  26.     return num;
  27. }
  28.  
  29. int main() {
  30.     std::cout << integerReplacement(27);
  31.     return 0;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement