ABC169に参加しました

この週は土曜に引き続き日曜もコンテストが開催されてたので参加しました。

atcoder.jp

前回のABCでは無念の2完終了だったので、今回は3完以上が目標です。

 

 

今回の結果

で、終わってみれば目標以上の4完を達成!残り1分でのD問題ACを決めた瞬間は、非常に嬉しかったです。

ABC169結果

ABC169結果

 

振り返り

A問題

A - Multiplication 1

2数を掛け算する問題。

特に考慮する制限はないので普通に実装してAC。

B問題

B - Multiplication 2

Aより少し難易度が上がり、インプットされる数をひたすら掛け算する問題。

要はオーバーフローに気をつけようという問題です。

 

Rubyだと、そのへんは気にしなくていいのだが、自分はJavaを使って解いてるので、オーバーフローチェックを実装して、なんとかAC。

C問題

C - Multiplication 3

小数と整数の掛け算を行うという問題。

普通に小数の文字列をdoubleとかにパースして計算すると、大抵の言語で誤差が出てしまうので、それを回避しましょうという問題です。

 

Javaはこういう時に便利なBigDecimalというクラスがあるので、それを活用して難なくACとなりました。

 

で、実際C言語とかだとこの辺苦労するかなー、て思ってたら想定解答は小数を100倍して整数になおしてから計算する、って感じでした。

そこまで考えが至らなかったのは反省です。

D 問題

D - Div Game

開始30分ほどで3完したので、こりゃ4完いけるかと臨んだD問題。

解法を検討したところ、素因数分解のロジックが必要と判明。

 

このへん、Rubyだと素因数分解ライブラリがあるので簡単だが、Javaだと自力で用意しないといけません。

 

で、なんとか自力で素因数分解ロジックを組んでみたら、バグは出るわTLEになるわで色々時間を浪費しましたが、ラスト1分、最後のお願いで出したコードが見事にAC!

 

いやー、ラスト1分前の提出→ACの流れは非常に感動的ですw

その他

E、F問題はコンテスト終了後に内容確認。

時間があればなんとか解けたかなーという難易度でした。

 もう少し他の問題の解答速度をあげないとね。

 

今回の実績

ABC169結果

コンテスト実績

この土日で大分レーティングが上昇。灰色脱出まで後もう少しです!

おわりに

いままで使い慣れたJavaでずっと解いてきたけど、そろそろRubyなどのスクリプト言語を復習して、問題に応じて使い分けるようにしよっかなーと思う今日この頃です。

次回も頑張ります。