JOI2008予選 A - おつり
目次
# 問題
https://atcoder.jp/contests/joi2008yo/tasks/joi2008yo_a
# 入力
N
- N - を満たす整数です.
# 出力
C
値段がである商品を買って1000円を出した時にのおつりのコインの最小枚数を答える問題です.
コインは500, 100, 50, 10, 5, 1の6枚です.
# 入出力例
380
4
おつりはなので、500円1枚、100円1枚、10円2枚が最小です.
# 解説
大きい方から好きなだけ使って良い問題なので典型的な貪欲法の問題です.
コインの大きい方から順に使えるだけ使いましょう.
使った分だけおつりから引いていき、枚数をカウントしていけば良いです.
# 計算量
コインの枚数が6枚でそれぞれ1回ずつ計算します.
入力値に関わらないので定数時間です.
# 解答
Int N;
vector<Int> coins({ 500, 100, 50, 10, 5, 1});
void input() {
cin >> N;
N = 1000 - N;
}
void solve() {
Int count = 0;
for (auto c: coins) {
if (N >= c) {
count += N / c;
N = N % c;
}
}
cout << count << endl;
}
int main() {
input();
solve();
return 0;
}