問題概要
問題ページ
-
A - Duplex Printing
問題ページへ移動する
問題文
高橋君は、全 \(N\) ページから成る書類を両面印刷します。両面印刷では、\(1\) 枚の紙に \(2\) ページ分のデータを印刷することが出来ます。
最小で何枚の紙が必要か求めてください。
制約
- \(N\) は整数
- \(1 \leq N \leq 100\)
問題の考察
実際にどのようになるのか考えてみる、
必要なページ数
- \(1\)ページの時、\(1\)枚
- \(2\)ページの時、\(1\)枚
- \(3\)ページの時、\(2\)枚
- \(4\)ページの時、\(2\)枚
- \(5\)ページの時、\(3\)枚
- \(6\)ページの時、\(4\)枚
- ・・・・・
このようになり次の\(2\)通りの考え方がすぐに思い浮かぶ。
考え方
- ページ数を\(2\)で割って切り捨てた後にページ数が奇数なら\(+1\)する
- ページ数を\(2\)で割って切り上げる
割り算の計算結果を切り上げる場合には、\((N + M - 1)// M\)とするとかmath.ceil()
ライブラリを使うと良い。
たびすけ
切り捨て・切り上げは競プロで頻出なので覚えましょう!
ACコード
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
n = int(input().rstrip('\n'))
print((n + 1) // 2)
if __name__ == '__main__':
solve()