题解
【基础】寻找2的幂
1 条题解
-
0
解题思路
从 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