1173:寻找2的幂
Description
数学上把2的K次方叫2的K次幂,如4、8、32等。给定一个整数n,请输出距离它最近的那个2的幂是多少。如果有两个距离相同,输出那个小的。
Input
只有一个整数 n(10 <= n <= 2000000000)
Output
只有一个整数,表示距离 最近的那个2的幂。
Sample Input
17
Sample Output
16
#include<iostream>
using namespace std;
int main()
{
long long int n,a[100]={0};
cin>>n;
a[0]=1;
for(int i=1;i<33;i++)
a[i]=a[i-1]*2;
for(int i=3;i<33;i++)
{
if(n-a[i]<a[i+1]-n||n-a[i]==a[i+1]-n)
{
cout<<a[i];
break;
}
}
}