D問に殺されたので自戒を兼ねて。
事前に調査してないと初めてなら99%引っかかるような内容だと思います。
浮動小数点の精度に注意しましょう。
※C++で参加しています
詳細
ABC154のD問題にて、浮動小数点で解答する問題が出ました。
そんなに難しいことを要求されたなかった(雑なことをしたらTLEになるのはわかりましたが)ので、
ササッとコードを書いて提出しました。
A-Dまで来て30分なのでかなりの好タイム(のはず)。
提出するも下の方の問題でWA。
コード見直しても原因わからないので放置してE問へ。
何度か見返してもダメだったので、終わってから解けてる人の答えを確認。
1 |
cout << fixed << setprecision(10) |
はて なんだ それは
C++でAC取ってる人の多くがこのおまじないを書いていたわけです。
初めて見たので検索をかけました。
浮動小数点の計算精度を変更するマニピュレータです。
知るか!!!
こちとら参加3回目やぞ!そんなルール知らんわ!!
ということで実質AC取れてたのにWAで400点落としていた回でした。
まとめ
AtCoderの浮動小数点問題ではsetprecisionで精度を変える。
これを見たあなたはきっと運がいいので一度も同じミスをせずに済みますね!
余談
結局E問は4つくらいWAが外れず3完で終わりました。
理論自体は大きく間違ってないけどパターンの回収漏れがありそうです。
後日。
コメント