Official
A - 印刷の用紙 / Printing Paper Editorial
by
A - 印刷の用紙 / Printing Paper Editorial
by
MMNMM
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
\(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))
