けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 044 A - 高橋君とホテルイージー (灰色, 100 点)

ちょっと数学的素養が必要な問題

問題概要

あるホテルの宿泊代は、

  • 最初の  K 泊は、1 泊  X
  • それ以降は、1 泊  Y

である。 N 泊したときの宿泊代を求めよ。

コード

if 文を使おう。

 K 泊以内の場合、つまり N <= K の場合は、X * N 円となる。

 K 泊を超える場合は、まず最初の  K 日分は X * K 円となる。残りの  N - 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;
}