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