top1编程
← 返回题目
题解

【基础】寻找2的幂

1 条题解

  • 0
    @ 2026-7-30 1:17:17

    解题思路

    从 1 开始不断乘 2,找到第一个不小于 n 的 2 的幂 p。前一个幂是 p/2,比较 n 到这两个数的距离,距离相同时取较小的数。

    参考代码

    
    #include <iostream>
    using namespace std;
    int main(){
        // 读入题目给出的输入数据
        long long n,p=1;
        cin>>n;
        while(p<n)p*=2;
        long long a=p/2;
        // 完成题目的关键计算或判断
        if(n-a<=p-n)cout<<a;
        else cout<<p;
        // 输出题目要求的答案
        return 0;
    }
    

    复杂度

    时间复杂度 O(log n),空间复杂度 O(1)。

    • 1