Чтобы понять проблему, давайте сначала рассмотрим эти примеры:
4 6 = (2 2 ) 6 = 2 12 = (2 3 ) 4 = 8 4 = 16 3 = 4096 .
Таким образом, можно сказать, что 4 6 , 2 12 , 8 4 и 16 3 одинаковы.
27 3 = 3 9 = 19683
так что 27 3 и 3 9 идентичны.
Теперь проблема для любой данной пары a b , как вычислить все другие возможные (если есть) x y где a b = x y . Меня интересует алгоритм , который может быть эффективно реализован в C / C ++.
Например:
Если входы такие:
4,6
желаемый результат: (2,12),(8,4)
8,4
желаемый вывод: (2,12),(2,6)
27,3
желаемый результат: (3,9)
12,6
желаемый результат: (144,3),(1728,2)
7,5
желаемый результат: No duplicate possible