#include <cmath>
#include <iostream>
using namespace std;
int qmi(int a,int b){
int res = 1;
while(b){
if(b&1){
res = res*a;
}
b>>=1;
a*=a;
}
return res;
}
int main() {
int t;cin>>t;
while(t--){
int n,m;cin>>n>>m;
int res2 = n-m;
int res3 = n/2;
int res1 = qmi(2,m);
for(int i = 1;i<=m;i++){
if(n>=10){
n = ceil(sqrt(n));
}
else if(n>=3){
int res2 = n-1;
int res3 = (n+1)/2;
int res1 = ceil(sqrt(n));
n = min(res1,min(res2,res3));
}
else{
n = n-(m-i+1);
break;
}
}
cout<<n<<'\n';
}
return 0;
}
// 64 位输出请用 printf("%lld")
就是考虑根号n和2分之n和n-1的大小关系,在n小于0时只有n-1只能使n减小,选择一个范围,由于根号n下降速度快,所以优先使用根号。



京公网安备 11010502036488号