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

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

AtCoder ABC 173 A - Payment (灰色, 100 点)

これはちょっと難しい。

問題概要

 N 円の買い物をした。1000 円札のみを用いて支払うとき、お釣りはいくらになるか?

解法

まず、 N が 1000 で割り切れるときは、お釣りはない。つまり、0 円である。

 N が 1000 で割り切れないときが少し難しい。たとえば、 N = 38713 のとき、これを 1000 で割ると

 38713 \div 1000 = 38 あまり  713

となる。この場合、1000 円冊は  38 + 1 = 39 枚払うことになる。このとき、おつりは

 1000 - 713 = 287

となる。より一般にまとめると、


  •  N 1000 で割り切れるとき、0 円
  • 割り切れないとき、あまりは N % 1000 円となるから、お釣りは 1000 - N % 1000 となる

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

int main() {
    int N;
    cin >> N;
    
    if (N % 1000 == 0)
        cout << 0 << endl;
    else
        cout << 1000 - N % 1000 << endl;
}