classSolution { longlonghelper(longlong m, longlong k, longlong lim){ longlong x = 1; for(int i = 0; i < k and x <= lim; i++) { x = x * m; } return x <= lim; } longlonghelper(longlong n, longlong k){ if(n <= 0) return0; longlong l = 1, r = n, res = 0; while(l <= r) { longlong m = l + (r - l) / 2; bool ok = helper(m,k,n); if(ok) { l = m + 1; res = m; } else r = m - 1; }
return res; } public: intcountKthRoots(int l, int r, int k){ returnhelper(r,k) - helper(l-1,k) + !l; } };