To Two 解説
与式 P+Q=α+β の両辺を 2 乗して整理し,P+Q=α+β+2αβ を得ます.
制約より両辺が非負の実数であることが保証されるので,この変形は同値です.
Ⅰ. Q が平方数のとき
Q は非負の整数ですから,(α,β)=(P+Q,0) としていいです.
整数全体の集合に零因子は存在しないので,これが αβ を最小にする唯一の組です.
Ⅱ. Q が平方数ではないとき
P=α+β∧Q=4αβ が成り立ちます.α および β は整数ですから,Q は 4 で割り切れる(1)必要があります.
また,2次方程式の解と係数の関係により α と β には t2−Pt+4Q=0 の 2 解のうちいずれかが当てはまり,
解の公式より (α,β)=(2P+P2−Q,2P−P2−Q) を得ます.
これらが非負の整数であるためには,P2−Q が平方数であることと,各分子が 2 で割り切れることが必要です.
P±P2−Q≡0⇒2P2±2PP2−Q−Q≡0⇔Q≡0(mod2) より,このとき Q は 2 の倍数です.これは (1) の条件に含まれます.
なお,Q が平方数でないならば (α,β) が一意に定まることが示せます.
したがって,各テストケースについて
(α,β)=⎩⎨⎧Qが平方数そうでない: (P+Q,0): {Q%4=0∧(P2−Qが平方数)そうでない:(2P+P2−Q,2P−P2−Q):なし(−1)
です.これは O(1) で求めることができます.
実装例