Найдите все тройки положительных целых чисел a < b < c, для которых a² + b² = c² и a + b + c = perimeter. Верните каждую тройку в виде [a, b, c], отсортированных по возрастанию a, затем b. Не включайте перестановки одних и тех же сторон.
Реализуйте функцию pythagorean_triplets(perimeter).
Ввод
perimeter: Требуемая сумма всех трёх сторон.
Вывод
Верните список троек в указанном порядке.
Ограничения
3 ≤ perimeter ≤ 100 000. Если ни один треугольник не подходит, верните пустой список.
Примеры
Ввод:
perimeter = 30
Ожидаемый вывод:
expected = [
[5, 12, 13]
]
Ввод:
long long perimeter = 30;
Ожидаемый вывод:
std::vector<std::vector<long long>> expected = {
{5, 12, 13}
};
Ввод:
long perimeter = 30;
Ожидаемый вывод:
long[][] expected = new long[][] {
new long[] {5, 12, 13}
};
Пояснение
5 + 12 + 13 = 30 и 5² + 12² = 13². Это единственная подходящая тройка.
Ввод:
perimeter = 11
Ожидаемый вывод:
expected = []
Ввод:
long long perimeter = 11;
Ожидаемый вывод:
std::vector<std::vector<long long>> expected = {};
Ввод:
long perimeter = 11;
Ожидаемый вывод:
long[][] expected = new long[][] {};
Пояснение
Нет возрастающей тройки положительных целых чисел, образующих прямоугольный треугольник, сумма которых равна 11.
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.