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

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

AtCoder ABC 160 B - Golden Coins (8Q, 灰色, 200 点)

算数的な問題

問題概要

高橋君は金色の硬貨が好きです。自分が持っている 500 円硬貨 1 枚につき 1000、5 円硬貨 1 枚につき 5 の「嬉しさ」を得る。

高橋君が  X 円もっているとき、高橋君の「嬉しさ」の最大値はいくらか?

制約

  •  0 \le X \le 10^{9}

考えたこと

コスパを整理しよう。

  • 500 円硬貨は、1 円あたりの「嬉しさ」が  1000 \div 500 = 2
  • 5 円硬貨は、1 円あたりの「嬉しさ」が  5 \div 5 = 1

であるから、500 円硬貨をできるだけ多く持って、残りの金額で 5 円硬貨をできるだけ多く持つのがよいとわかる。よって、


  • 500 円硬貨の枚数:X / 500
  • 5 円硬貨の枚数:(X % 500) / 5

となる。これに、1000、5 をかけて足せば、答えが求められる。

コード

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

int main() {
    int X;
    cin >> X;

    int num_500 = X / 500;
    int num_5 = (X % 500) / 5;

    cout << num_500 * 1000 + num_5 * 5 << endl;
}