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

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

AtCoder ABC 265 A - Apple (7Q, 灰色, 100 点)

ちょっと頭を使う系の問題。この時期の ABC-A にはこういうものが多かったね。

問題概要

りんごをちょうど  N 個買いたい

  •  X 円払って  1 個買う
  •  Y 円払って  3 個買う

のいずれかによって、ちょうど  N 個買うための最小コストを求めよ。

解法

以下のいずれかの方法を試して、価格が小さい方を求めれば OK!

  • すべて 1 個ずつ買う方法:
    •  NX
  • できるだけ 3 個ずつ買って、余った分は 1 個ずつ買う方法:
    •  N を 3 で割った商を  q、余りを  r として
    •  qY + rX

よって、答えは min(N * X, q * Y + r * X) と表せる。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int X, Y, N;
    cin >> X >> Y >> N;
    
    int q = N / 3, r = N % 3;
    cout << min(N * X, q * Y + r * X) << endl;
}