//算法练习No.9
//数学构造+边界处理
#include <iostream>
#include <cmath>
using namespace std;
typedef __int128_t int128;
void solve()
{
long long n,k;
cin >> n >> k;
if(k == 1)
{
cout << n << endl;//m=n,结果为0
return;
}
if(k >= 62)
{
cout << 1 << endl;//
return;
}
//不大不小的情况
long long m = pow(n,1.0/k);//m == n^1/k
if(m == 0) m = 1;
//比较m^k 与 m+1^k
int128 a {1};
int128 b {1};
for(int i = 0;i<k;i++) a *= m;
for(int i = 0;i<k;i++) b *= (m+1);
//int128 不能直接用 abs
int128 c = (a>(int128)n)?(a-n):(n-a);
int128 d = (b>(int128)n)?(b-n):(n-b);
if(c > d)
{
cout << m+1 << endl;
}
else
{
cout << m << endl;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while(t--)
{
solve();
}
return 0;
}
// 64 位输出请用 printf("%lld")