F - Regular Triangle Inside a Rectangle Editorial by Kiri8128


markdown での図の貼り付け方が分からないので、 こちらのツイート の図を参照してください。

\(A\le B\) として一般性を失わないのでそう仮定します。

\(B\)\(A\) に比べて十分大きいときは、正三角形の一辺が長方形の辺と平行になるときは最善で、このときの最大値は \(\displaystyle\frac{A}{\sin \frac{\pi}{3}}\) です。これは \(A \le B\sin \frac{\pi}{3}\) のときに起こります。

② そうでないときは「斜め」になるときが最善です。 このとき、正三角形の一辺の長さを \(r\) 、長さ\(A\) の辺と正三角形のなす角を \(\theta\) とする(画像 2 枚目参照)と

\[r\cos\theta=A\]

\[r\cos(\frac{\pi}{6}-\theta)=B\]

が成立します。辺々割って整理すると \(\theta = \arctan\Big(\displaystyle\frac{2B}{A}-\sqrt{3} \Big)\) が言えます。 一辺の長さは \(\displaystyle\frac{A}{\cos\theta}\) です。

実装上は、①・②の 2 つの式の小さい方を出力すれば AC を得ることができます。

実装例 (PyPy 3)

posted:
last update: