fork(2) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int q, n, largest, cnt, templen;
  6.  
  7. int main() {
  8. cin >> q;
  9. while(q--)
  10. {
  11. largest = 1;
  12. cnt = templen = 0;
  13. cin >> n;
  14. if(n == 1)
  15. {
  16. cout << "1\n";
  17. continue;
  18. }
  19. if(n == 2)
  20. {
  21. cout << "2\n";
  22. continue;
  23. }
  24. if(n == 3)
  25. {
  26. cout << "3\n";
  27. continue;
  28. }
  29. while(largest * 2 <= n)
  30. {
  31. largest *= 2;
  32. cnt++;
  33. }
  34. if(n >= largest * 2 - 1) cout << 2 * cnt + 1 << '\n';
  35. else if(n >= largest + (largest / 2) - 1) cout << 2 * cnt << '\n';
  36. else cout << 2 * cnt - 1 << '\n';
  37. }
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 4504KB
stdin
5
2
6
8
15
32
stdout
2
4
5
7
9