В этом посте мы попробуем найти n-й корень из x.

где x и n являются числовыми литеральными типами

для этого нам нужно использовать возведение в степень с небольшой модификацией:

type CreateArrayWithLengthX<
    LENGTH extends number,
    ACC extends unknown[] = [],
> = ACC['length'] extends LENGTH
    ? ACC
    : CreateArrayWithLengthX<LENGTH, [...ACC,1]>
type Multiplication<X extends number, Y extends number, Z extends number[] = [], V extends unknown[] = []> = 
    [...CreateArrayWithLengthX<Y>]['length'] extends Z['length']
    ? V
    : Multiplication<X,Y,[1,...Z],[...CreateArrayWithLengthX<X>,...V]>

type Exponentiation<X extends number, N extends number, Counter extends number[] =[], Acc extends unknown[] = [1]> =
    Counter['length'] extends N 
        ? Acc // modified 
        : Exponentiation<X, N, [1, ...Counter], Multiplication<Acc['length'],X> >

хорошо, теперь у нас есть строительный блок, давайте сделаем это

type Root <X extends number, N extends number, Counter extends number[] = []> =
    [...Exponentiation<Counter['length'], N>]['length'] extends X 
        ? Counter['length'] 
        : Root<X, N, [1,...Counter]>
type A = Root<4,2> // 2
type B = Root<8,3> // 2
type C = Root<81,4> // 3
type D = Root<625,4> // 5
type E = Root<1024,10> // 2
type F = Root<2187,7> // 3
type G = Root<9261,3> // 21

"детская площадка"

ограничение: X и N должны быть целыми положительными числами и работают только с целым положительным корнем. X не может превышать 9999, поскольку максимальный размер кортежа равен 9999.

X может превышать 999, если результат^(N-1) меньше 1000

Предупреждение, пожалуйста, вставляйте ввод один за другим, иначе это сломает игровую площадку.