fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. while (cin >> n) {
  7. // 找到不大于n的最大2的幂次
  8. int power = 1;
  9. while (power * 2 <= n) {
  10. power *= 2;
  11. }
  12.  
  13. // 最后剩下的数字是 2*(n-power) + 1
  14. // 或者更简单:n的二进制表示去掉最高位后的值乘以2
  15. int result = 2 * (n - power) + 1;
  16. cout << result << endl;
  17. }
  18. return 0;
  19. }
Success #stdin #stdout 0.01s 5320KB
stdin
500
stdout
489