AtCoderで茶色を目指す 18日目
6:00起床。最近、寒い。涼しいじゃなくて寒い。
暖房出そうかな。。。
目標
次回、コンテストまでにB問題を解き切るのが目標。そのために、15〜20問解こうと思います。B問題は難しいと感じることが多いです。でも、全てが解けない、できないじゃない!成長する見込みしか感じないよ。
備忘録
計算結果が変
備忘録の題名が雑ですが。。。解きたい問題は以下です。
そして、自分が作ったコードです。ちなみに、結果はWA(間違った解答)。
1杯あたりのアルコール量をリスト化して、境界を超えたら繰り返し処理を終了して、結果を出力しようっていう考えで書きました。
提出結果では、ケースが31個の中7個が誤答でした。sampleは全て正解だったので、テストケースを調べて、誤答したケースでコードテストすると。。。
7.000000000000009 ⇦(7*100/100)の結果
上のコードにおけるsum(m)の結果です。「9」ってどこから湧いた!?という訳で、ようやく本題です。「python 割り算 誤差」でググりました。
こちらのサイトに誤差が発生する原因と解決方法がありました。ありがたいです。原因は分かりましたが、今回のケースにおいては解決法が適用できないです。。。
でも、これで割り算を使うと上手くいかないことがわかったので、割り算を使わない方法を考えました。
繰り返し処理の部分を抜粋しました。前半の入力は先にあるコードと変えてないです。式変換をしました。条件式に出てた割り算(/100)は両辺にかけてやりました。
これで、無事に正解!
反省
B問題の進捗具合がイマイチです。問題を解いていくたびに、新発見があったりで脳がキャパオーバーしそう。でも、問題解いた分解法を知って、それを他の問題に活かすこともできてる。もう少しだけ頑張ろう。