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: