递归,一定超时吗?
不!
递归也可以二分啊!
把每一次的while都看成一次递归就行了!
我的代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int ans = -1;
void erfen(int l,int r){
if(l>r){
cout<<ans<<endl;
exit(0);
}
int mid = (l+r)/2;
if(mid*mid*mid<=n){
ans=max(ans,mid);
erfen(mid+1,r);
}
else{
erfen(l,mid-1);
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
erfen(1,100000);
return 0;
}