1005: 【基础】寻找2的幂

内存限制:16 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:41 解决:18

题目描述

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

输入

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

输出

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

样例输入 复制

17

样例输出 复制

16

提示

n=int(input())
ans=1
k=0
while True:
    if ans>=n:
        if ((2**k-n)<(n-2**(k-1))):
            ans=2**k
        else:
            ans=2**(k-1)
        break
    k+=1
    ans=2**k
print(ans)