Вызов
Есть много чисел, которые могут быть выражены как разность двух квадратов, или как разность двух кубов, или, возможно, даже более высоких степеней. Говоря о квадратах, есть различные способы написать число, скажем, 75, как разность 2 квадратов. Ты можешь написать:
75 = (10)^2 - (5)^2
= (14)^2 - (11)^2
= (38)^2 - (37)^2
Итак, давайте поговорим о проблеме. Сначала пользователь вводит число, а затем вводит значение для n. Вам нужно отобразить все способы, которыми это число может быть записано в виде aⁿ - bⁿ.
Вход и выход
На входе будет число и значение n. Ваш вывод должен содержать все такие пары «a» и «b», чтобы выполнялось вышеуказанное условие. Первое число в паре должно быть больше второго. Обратите внимание, что a, b, n и введенное число являются положительными целыми числами, а n> 1 .
Примеры
50, 2 -> (none)
32, 2 -> (9,7), (6, 2)
7, 3 -> (2,1)
665, 6 -> (3, 2)
81, 4 -> (none)
счет
Это код-гольф , поэтому выигрывает самый короткий код!
==
в UniHaskell несколько сбивает с толку, поскольку он обозначает соответствие в математике.