1032: 寻找2的幂
Time Limit: 1 Sec Memory Limit: 128 MBDescription
数学上把2的K次方叫2的K次幂,如4、8、32等。给定一个整数n,请输出距离它最近的那个2的幂是多少。如果有两个距离相同,输出那个小的。
Input
只有一个整数 n(10 <= n <= 2000000000)
Output
只有一个整数,表示距离 最近的那个2的幂。
Sample Input
17
Sample Output
16
HINT
Source
#include<iostream>
using namespace std;
main()
{
long long int n,m,count=1; //注意最大要满足2*10^9.
cin>>n;
m=n;
while(n!=1)
{
n/=2;
count*=2; //count为不大于n的最大2的倍数
}
if(m<=3.0*count/2.0)cout<<count<<endl; //判断距离
else if(m>3.0*count/2.0)cout<<count*2<<endl;
}