AtCoder Beginner Contest

【pythonでABC157を解説】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()

プログラミング

-AtCoder Beginner Contest
-