2022-03-14 アルゴリズムと数学 演習問題集 084, 085 を解いた
アルゴリズムと数学 演習問題集 084 - Sqrt Inequality を解いた。
問題: https://atcoder.jp/contests/math-and-algorithm/tasks/panasonic2020_c
パナソニックプログラミングコンテスト 2020 の C - Sqrt Inequality (https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_c) と同じ問題だ。
素朴にルートを計算すると浮動小数点数になってしまい精度の問題が出る。そこで式変形してルートを外す。両辺を二乗して a + b + 2 \sqrt{ab} < c
。移項してさらに二乗 4ab < (c - (a + b))^2
。 c - (a + b) < 0
のときは No にすることに注意する。 Rust の場合は usize で入力を取ると判定なしには RE になるので自然と判定を入れることになる。
提出: https://atcoder.jp/contests/math-and-algorithm/submissions/30125408 解説: https://atcoder.jp/contests/panasonic2020/editorial
アルゴリズムと数学 演習問題集 085 - Two Conditions を解いた。
問題: https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bo
例題。例題に記載のものとは違い abcd = Y
から Y
の約数を列挙してそれを 4 重ループした。 N 以下であるという制約を忘れて WA を出した。ちなみに例題の解法は a <= b <= c <= d
の制約を追加しても答えに影響が出ないことを活かすもの。
提出: https://atcoder.jp/contests/math-and-algorithm/submissions/30125612
Java の record は private constructor を持てなさそう。レコード・クラスと同じ可視性になるようなので。必要なら interface で実装を隠せばいいけど相応に手間がかかる。
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/lang/Record.html
今日のコミット。
- rust-atcoder 1 commit
- rust-sandbox 9 commits