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

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

AtCoder ABC 088 A - Infinite Coins (灰色, 100 点)

少し気づきにくいかもしれない。

問題概要

あなたは、 1 円硬貨を  A 枚と、 500 円硬貨を無限枚持っている。

これらで  N 円をちょうど支払うことができるかどうかを判定せよ。

解法

一瞬戸惑う問題だと思う。現実の支払いの場面を思い浮かべてみるとわかりやすいと思う。次のようにすると思う。

  • まず  500 円硬貨で出せるだけ出す
  • 余った部分を  1 円硬貨で補うようにする

しかし、余った部分の金額が  A 円より多かったらちょうど支払うことはできない。 A 円以下だったらちょうど支払うことができる。

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

int main() {
    int N, A;
    cin >> N >> A;
    
    int amari = N % 500;
    
    if (amari <= A) cout << "Yes" << endl;
    else cout << "No" << endl;
}