这道题很明显是一个贪心问题,每一次我们尽可能选可以让我们距离更近的方法,因为开立方根一定是前面比后面好,所以可以先给ans赋初值fabs(a-b)然后用循环表示闪现次数,每次用cbrt,min函数比较所能节约的距离。即可得到答案
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
double x,y;
scanf("%lf%lf",&x,&y);
double ans=fabs(x-y);
for(int i=1;i<=16;i++){
x=cbrt(x);
ans=min(ans,fabs(x-y)+i);
}
printf("%.7lf\n",ans);
}
return 0;
}