問題
原文(英語)を表示正の整数 a < b < c について、a² + b² = c² かつ a + b + c = perimeter を満たすすべての三つ組を求めてください。それぞれの三つ組は [a, b, c] の形で、a が小さい順、次に b が小さい順に並べて返してください。同じ辺の順列は含めないでください。
pythagorean_triplets(perimeter) を実装してください。
入力
perimeter: 3辺の合計となる値。
出力
指定された順序で三つ組のリストを返してください。
制約
3 ≤ perimeter ≤ 100,000。条件を満たす三角形が存在しない場合は空リストを返してください。
例
例 1
入力:
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² です。これが唯一条件を満たす三つ組です。
例 2
入力:
perimeter = 11
期待される出力:
expected = []
入力:
long long perimeter = 11;
期待される出力:
std::vector<std::vector<long long>> expected = {};
入力:
long perimeter = 11;
期待される出力:
long[][] expected = new long[][] {};
解説
増加する正の整数の直角三角形三つ組で和が11になるものはありません。
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。