可能不是正解!

由于k>=1,n-pow(m, k)显然单调,于是想着二分查找第一个n-pow(m, k)大于0的m,然后比较此时二分结束的l和l - 1,答案m一定在这两之中

用Python写就不需要实现高精度了,记得用PyPy3解释器,Python3解释器太慢了

import sys

input = lambda : sys.stdin.readline().strip()

def quick_power(a, b):
  res = 1
  while b != 0:
    if b & 1:
      res *= a
    a = a * a
    b //= 2
  return res

ans = []
t = int(input())
for i in range(t):
  n, k = map(int, input().split())
  if k == 1:
    ans.append(n)
    continue
  elif k >= 65:
    ans.append(1)
    continue
  
  l, r = 1, 10 ** 9
  while l < r:
    mid = (l + r) // 2
    if n - quick_power(mid, k) > 0:
      l = mid + 1
    else:
      r = mid
  
  if abs(n - quick_power(l - 1, k)) < abs(n - quick_power(l, k)):
    ans.append(l - 1)
  else:
    ans.append(l)

print("\n".join(map(str, ans)))