ちょっと数学的素養が必要な問題
問題概要
あるホテルの宿泊代は、
- 最初の 泊は、1 泊 円
- それ以降は、1 泊 円
である。 泊したときの宿泊代を求めよ。
コード
if
文を使おう。
泊以内の場合、つまり N <= K
の場合は、X * N
円となる。
泊を超える場合は、まず最初の 日分は X * K
円となる。残りの 日分は Y * (N - K)
円となる。よって合計で X * K + Y * (N - K)
円となる。
#include <bits/stdc++.h> using namespace std; int main() { int N, K, X, Y; cin >> N >> K >> X >> Y; int res; if (N <= K) { // N 泊が K 泊以内である場合は、X 円 × N 日 res = X * N; } else { // N 泊が超える場合は、最初の K 泊は X 円 x K 日。残りは Y 円 × (N - K) 日 res = X * K + Y * (N - K); } cout << res << endl; }