複素数は奥深いなぁ
解法
なら,すでに正方格子なので答えは
です.
以下, とします.
与えられた点が正方格子状に並んでいることが重要なので,与えられたある点を基準とした相対座標 を考えます.
ここでは, 番目の点を基準として,
とします.
ここで,複素平面を考えると,正方格子の基底を とすると,相対座標は次のように表すことができる.
とかける.ここで,
は複素数である.
正方格子であることを考えると, の実部と虚部は整数である必要があるので,
はガウス整数である.
また,入力の制約から もガウス整数である.
求めたい正方格子の1辺の長さは大きい方が良いため,条件を満たす の中でノルム最大のものを見つけたい.
つまり,求めたい は
の最大公約数である.
ガウス整数上での最大公約数は定義できるのか?
最大をノルム最大ということにすれば定義できて,同伴による違いを無視すると素因数分解の一意性から一意に定まる.
ということで,ガウス整数に対するユークリッドの互除法を計算すると, が求まる.
剰余を求める際には,商が有理数になるので実部と虚部をそれぞれ最も近い整数に丸めれば良い.
その上で,剰余のノルムが除数のノルムより小さい剰余を選択する.
あとは,から
を求めると,
である.
答えは, となる.