简单二分
2024-09-14 22:13:36
发布于:广东
2阅读
0回复
0点赞
很显然,x越大,得到的结果也越大。因此,这里具有单调性,能用二分。
#include<bits/stdc++.h>
using namespace std;
int y,n;
bool check(int mid){
return pow(mid,n) >= y;
}
int main(){
int _;
cin >> _;
while(_--){
cin >> n >> y;
int l = 0,r = y,ans = -1;
while(l <= r){
int mid = (l + r) / 2;
if(check(mid)){
r = mid - 1;
ans = mid;
} else {
l = mid + 1;
}
}
if(pow(ans,n) != y){
cout << -1 << endl;
continue;
}
cout << ans << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个