[AtCoder] パナソニックプログラミングコンテスト2020 C – Sqrt Inequality
問題
方針
実際に平方根の計算をすると誤差が怖いので、整数で比較する方法を考えます。
\[\begin{eqnarray}
\sqrt{a} + \sqrt{b} &<& \sqrt{c}\\
a + \sqrt{2ab} + b&<& c\\
\sqrt{2ab}&<& c – a – b\\
\end{eqnarray}\]
ここで、\( c – a – b < 0\) ならば上記の不等式は正しくありません。よって、\( c – a – b \geq 0\) のとき、上式は、
\[4ab < (c – a -b )^2\]
となるので、この値を比較すれば良いです。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll a, b, c; cin >> a >> b >> c; ll l = 4 * a * b; ll r = c - a - b; if (r < 0) { cout << "No\n"; return 0; } r *= r; if (l < r) cout << "Yes\n"; else cout << "No\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません