最接近二的幂优化求助:题目
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,mi=INT_MAX,k=1;
cin>>n;
for(int i=1;1<<i<=2e9;i++){
if((1<<(i-1))>n) break;
if((abs((1<<i)-n))<mi){
mi=abs((1<<i)-n);
k=i;
}
}
cout<<(1<<k);
}
这是我的第一份代码,第9个测试点超时了
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,k=1,ans=1;
double mi=1.0*INT_MAX;
cin>>n;
while(n){
n/=2;
if(abs(n-1)<mi){
ans=k;
mi=abs(n-1);
}
k++;
}
cout<<(1<<ans);
}
后来我改变思路,和1比大小,但是在第6个测试点 WA 了。求 dalao 给思路 / 优化