题目描述
数学上把2的K次方叫2的K次幂,如4、8、32等。给定一个整数n,请输出距离它最近的那个2的幂是多少。如果有两个距离相同,输出那个小的。
输入
只有一个整数 n(10 <= n <= 2000000000)
输出
只有一个整数,表示距离 最近的那个2的幂。
样例输入
17
样例输出
16
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n=2;
cin>>m;
while(n<=m){
n*=2;
}
if((n-m)<(m-n/2)){
cout<<n<<endl;
}
else{
cout<<n/2<<endl;
}
return 0;
}