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

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

diverta 2019_2 A - Ball Distribution (灰色, 100 点)

「競プロのための算数」を気軽に放出したら、この問題の存在について指摘を受けた!

問題概要

 N 個のボールを  K 人に配る。

全員が  1 個以上のボールをもらえるようにする。ボールが最も多い人と最も少ない人のボールの個数の差の最大値を求めよ。

制約

  •  1 \le K \le N \le 100

考えたこと

 K = 1 の場合は、そもそも 1 人しかいないので「最も多くもらえる人」も「最も少なくもらえる人」も一緒である。よって、個数の差は常に  0 個になる。

 K \ge 2 の場合で、最も差が大きくなるのは

  •  K-1 人に、 1 個ずつ配り
  • 最後の 1 人に、残り全部を配る

という場合である。残り全部とは  N - (K - 1) 個である。よって、最も多い人と最も少ない人の差の最大値は

 N - (K - 1) - 1 = N - K

と求められる。

コード

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

int main() {
    int N, K;
    cin >> N >> K;
    
    if (K == 1) cout << 0 << endl;
    else cout << N - K << endl;
}