OilDrum's PLAYGROUND

どらむかんのゲーム日記サイト

当サイトの記事にはプロモーションが含まれています。

ABC397 - A - Thermometer

最終更新:2025-03-19 投稿日:2025-03-19

2025/03/15に行われたオムロンプログラミングコンテスト2025(AtCoder Beginner Contest 397)のA問題の解法についての記事です。

考えたこと

誤差の原因になってしまう可能性があるため、なるべく小数として扱いたくありません。

そこで、体温\( X \)をstring型で取得して処理していくことにしました。

コードの例

#include <bits/stdc++.h>using namespace std;int main() {    string X;    cin >> X;    int a,b,c;    a = X.at(0) - '0';    b = X.at(1) - '0';    c = X.at(3) - '0';    a *= 100;    b *= 10;    c *= 1;    int temp = a + b + c;    int ans = 0;    if (temp >= 380) {        ans = 1;    } else if (temp >= 375) {        ans = 2;    } else {        ans = 3;    }    cout << ans << endl;    return 0;}

解法

例えば \( X \) == 36.8 の場合、
\(a \) = 3
\(b \) = 6
\(c \) = 8
とした上で、\( temp = a * 100 + b * 10 + c \)を求めます。

あとは求めた\( temp \)の値によってif文で条件分岐させ、3段階のうちどこに割り振られるかを判定すればよいです。

小数点を除去するために\( temp \)は\( X \)を10倍した値になっているので、if文での条件も10倍する必要があることには注意しましょう。