HOSTOJ 1032:寻找2的幂

来源:互联网 发布:御名阁宝宝起名软件 编辑:程序博客网 时间:2024/06/01 23:49

Description


数学上把2的K次方叫2的K次幂,如4、8、32等。给定一个整数n,请输出距离它最近的那个2的幂是多少。如果有两个距离相同,输出那个小的。

Input

只有一个整数 n(10 <= n <= 2000000000)

Output

只有一个整数,表示距离 最近的那个2的幂。

Sample Input

17

Sample Output

16

<span style="font-family:Times New Roman;">#include<cstdio>#include<cassert>int main(){int num,temp=1,before,now;scanf("%d",&num);assert(num>=10 && num<=2000000000);while(temp<num){temp = temp << 1;}now =temp;before = temp >> 1;if((num-before)==(now-num)) ///重点两个相等时候的处理,取较小的那个printf("%d\n",before);else    printf("%d\n",(num-before)<(now-num) ? before : now);return 0;}</span>

Important:if((num-before)==(now-num)) ///重点两个相等时候的处理,取较小的那个.

0 0