【基础】寻找2的幂

【基础】寻找2的幂

时间限制: 1 Sec  内存限制: 16 MB
提交: 1280  解决: 562
[提交][状态][讨论版]

题目描述

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

输入

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

输出

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

样例输入

17

样例输出

16

提示

 

来源

[提交][状态][讨论版]

 

 

const
    a:array[1..29]of int64=(8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824,2147483648);
var
    x,i:longint;
begin
    readln(x);
    i:=2;
    while a[i]<x do inc(i);
    if x-a[i-1]<=a[i]-x then writeln(a[i-1]) else writeln(a[i]);
end.
posted @ 2013-04-06 10:59  qilinart  阅读(1233)  评论(0编辑  收藏  举报