【基础】寻找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.
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.