ちょっと頭を使う系の問題。この時期の ABC-A にはこういうものが多かったね。
問題概要
りんごをちょうど 個買いたい
- 円払って 個買う
- 円払って 個買う
のいずれかによって、ちょうど 個買うための最小コストを求めよ。
解法
以下のいずれかの方法を試して、価格が小さい方を求めれば OK!
- すべて 1 個ずつ買う方法:
- 円
- できるだけ 3 個ずつ買って、余った分は 1 個ずつ買う方法:
- を 3 で割った商を 、余りを として
- 円
よって、答えは 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; }