これはちゃんと整理するの大変だと思う!
問題概要
ある商品は、賞味期限を過ぎてから 日後まではお腹を壊さずに食べることができる。一方、賞味期限を過ぎてから食べると美味しくありません。
その商品を、賞味期限の 日前に購入し、その日から 日後に食べた。以下のいずれであるかを判定せよ。
- 美味しかった (賞味期限以前に食べた):"deliciouos"
- 美味しくはなかったがお腹は壊さなかった:"safe"
- お腹を壊した:"dangerous"
解法
ある絶対的な基準を設けて考えるのが楽だと思う。ここでは、
賞味期限の日を [日目] としたときの、食べた日
を基準として考えることにする。この値は [日目] である。なぜならば、購入した日は [日目] であり、その 日後に食べたからだ。
このとき、次のように整理できるだろう。
- のとき:賞味期限以前なので、"deliciouos"
- のとき:"safe"
- のとき:"dangerous"
ポイントは、 の値のみで判定できることだ!!
#include <bits/stdc++.h> using namespace std; int main() { int X, A, B; cin >> X >> A >> B; if (B - A <= 0) cout << "delicious" << endl; else if (B - A <= X) cout << "safe" << endl; else cout << "dangerous" << endl; }