package main import . "fmt" // 数学…? // ググって調べた結果 // ピタゴラス数のユークリッドの式 // (a,b,c) = (m^2-n^2,2*m*n,m^2+n^2) # mとnは偶奇が違う整数 // という式が出てきて // Lの小さい範囲で手計算で確認したところ 長さの差が1になる2辺が対で出てくることに気づく // Lが4の倍数のとき、m=L/2,n=1 と置くとピタゴラス数を求められる // Lが奇数のとき // L = m^2-n^2 として m=n+1 と置くと L = 2*n + 1 となり ピタゴラス数を求めることができる // Lが4の倍数ではない偶数のとき、L/2 = 2*n + 1 として求まるピタゴラス数を2倍にすればいい // // これ数学ではなくコンピュータ計算力で解を発見ってどうするんだろう…? // Lの小さい範囲を全探索的に解を求めて並べて眺める(いわゆる実験)をして特徴に気づけってこと…? func main() { var t int Scan(&t) for ; t > 0; t-- { var l int Scan(&l) var m, n int switch { case l % 4 == 0: m, n = l/2, 1 Println(m*m-n*n, 2*m*n, m*m+n*n) case l % 2 == 0: n = (l/2-1)/2 m = n+1 Println(2*(m*m-n*n), 2*2*m*n, 2*(m*m+n*n)) default: n = (l-1)/2 m = n+1 Println(m*m-n*n, 2*m*n, m*m+n*n) } } }