75pts代码,WA on#1,5:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long m,n;
cin>>n>>m;
long long l=0,r=n;
while(l<r-1){
long long mid=(r+l)/2;
if(pow(mid,m)<=n) l=mid;
else r=mid;
}
cout<<r-1;
return 0;
}
100pts代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long m,n;
cin>>n>>m;
long long l=0,r=n;
while(l<=r){
long long mid=(r+l)/2;
if(pow(mid,m)<=n) l=mid+1;
else r=mid-1;
}
cout<<r;
return 0;
}
同样是二分,为什么对于 mid 的处理不一样就出错呢?
求大佬解答。