Official

A - 印刷の用紙 / Printing Paper Editorial by MMNMM


初心者の方へ

\(A\) ページある資料を、\(1\) 枚あたり \(B\) ページまとめて印刷するとき、必要になる用紙の枚数は \(\left\lceil\dfrac AB\right\rceil\) 枚です(実数 \(x\) に対して、\(\lceil x\rceil\) で \(x\) を下回らない最小の整数、つまり「 \(x\) を整数に切り上げた値」を表します)。

\(A,B\) が与えられたとき、\(\left\lceil\dfrac AB\right\rceil\) は例えば次のような方法で求めることができます。

  • \(\dfrac AB\) を浮動小数点数として計算し、それを整数に切り上げる。
  • 整数の範囲の除算を使い、\(-\left\lfloor\dfrac{-A}B\right\rfloor\) や \(\left\lfloor\dfrac{A+B-1}B\right\rfloor\) などに変形して求める。

この問題の制約のもとで、前者の方法で正しい答えを求められる(計算の誤差で正しくない値を得ることがない)ことが示せます。 また、言語によって負の整数の割り算の挙動が異なる場合があるため、後者の方針で解く場合には使う言語で正しい答えを求められるような式変形となるように注意してください。

実装例は以下のようになります。

#include <iostream>
using namespace std;

int main() {
    int N;
    cin >> N;
    for (int i = 0; i < N; ++i) {
        int A, B;
        cin >> A >> B;
        cout << (A + B - 1) / B << endl;
    }
    return 0;
}
N = int(input())

for i in range(N):
    A, B = map(int, input().split())
    print(-(-A // B))