解説
正 N 角形の内角の総和は 180(N−2) 度であり、1 つの内角の大きさは N180(N−2) となります。
よって、a≤x180(x−2) を満たすような最小の x を求めれば良いです。
しかし、一つ懸念点があります。それは x の範囲がわからないということです。ということで、 x の範囲を調べます。先ほどの式を変形すると
a≤x180(x−2)↔ax≤180(x−2)↔360≤(180−a)x
となり、x の係数が最も小さくなる a=179 を代入したとしても条件を満たす x は 360≤x であり、
x≤360 の範囲で xmin が見つかることになります。
よって、3≤x≤360 の範囲でa≤x180(x−2) を満たすような最小の x を探せばよく、
これ以上の x の値について調べる必要がないことがわかりました。
愚直に x を一個一個調べても時間計算量は O(x) ですが、x≤360 より余裕を持って間に合います。
余談
-
x180(x−2) は単調減少な関数なので、答えを見つける上で二分探索が使えます。時間計算量は O(log(x)) となり、本制約に対して過剰に高速化が出来ます。
-
360≤(180−a)x を満たすような最小の xmin は、 x が整数であるという条件よりこの式から
xmin=⌈(180−a360)⌉ であることが分かります。
これを利用することで時間計算量を O(1) にできます。
-
今回の問題において、小数を扱うことによるWAの発生を確認できませんでしたが、基本的にこのような問題で小数を扱うのはやめましょう。