An Angle of Regular Polygon

2 secs 1024 MB
programgmg2's icon programgmg2

解説

NN 角形の内角の総和は 180(N2)180(N-2) 度であり、11 つの内角の大きさは 180(N2)N\displaystyle \frac{180(N-2)}{N} となります。

よって、a180(x2)x\displaystyle a \leq \frac{180(x-2)}{x} を満たすような最小の xx を求めれば良いです。

しかし、一つ懸念点があります。それは xx の範囲がわからないということです。ということで、 xx の範囲を調べます。先ほどの式を変形すると

a180(x2)xax180(x2)360(180a)x\displaystyle a \leq \frac{180(x-2)}{x} \leftrightarrow ax \leq 180(x-2) \leftrightarrow 360 \leq (180-a)x

となり、xx の係数が最も小さくなる a=179a = 179 を代入したとしても条件を満たす xx360x360 \leq x であり、 x360x \leq 360 の範囲で xminx_{min} が見つかることになります。

よって、3x3603 \leq x \leq 360 の範囲でa180(x2)x\displaystyle a \leq \frac{180(x-2)}{x} を満たすような最小の xx を探せばよく、 これ以上の xx の値について調べる必要がないことがわかりました。

愚直に xx を一個一個調べても時間計算量は O(x)O(x) ですが、x360x \leq 360 より余裕を持って間に合います。

余談

  •  180(x2)x\displaystyle \frac{180(x-2)}{x} は単調減少な関数なので、答えを見つける上で二分探索が使えます。時間計算量は O(log(x))O(log(x)) となり、本制約に対して過剰に高速化が出来ます。

  • 360(180a)x360 \leq (180-a)x を満たすような最小の xminx_{min} は、 xx が整数であるという条件よりこの式から xmin=(360180a)\displaystyle x_{min} = \lceil(\frac{360}{180-a})\rceil であることが分かります。 これを利用することで時間計算量を O(1)O(1) にできます。

  • 今回の問題において、小数を扱うことによるWAの発生を確認できませんでしたが、基本的にこのような問題で小数を扱うのはやめましょう。