D - Opposite Editorial by kusano
言語によっては複素数が扱えるので、複素平面で考えると楽に解けます。
\(p_0 = x_0+y_0i\)、\(p_{\frac{N}{2}} = x_{\frac{N}{2}}+y_{\frac{N}{2}}i\)、\(o=\frac{1}{2}\left(p_0+p_{\frac{N}{2}}\right)\)、長さが\(1\)で偏角が\(\frac{2\pi}{N}\)の複素数を\(r\)とすると、答えは\(p=(p_0-o)r+o\)です。
Pythonでの例。
import math, cmath
N = int(input())
x0, y0 = map(float, input().split())
xN2, yN2 = map(float, input().split())
p0 = complex(x0, y0)
pN2 = complex(xN2, yN2)
o = (p0+pN2)/2
r = cmath.rect(1, 2*math.pi/N)
a = (p0-o)*r+o
print("%.10f %.10f"%(a.real, a.imag))
posted:
last update: