当サイトの記事にはプロモーションが含まれています。
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倍する必要があることには注意しましょう。