turtlechanのブログ

無知の私がLinuxをいじりながら書いていくブログ

【Python】No.46 はじめのn歩 - yukicoder

python2で解く。
※私がPythonの学習のために解説する記事なので間違い等あるかもしれません。

問題URL: https://yukicoder.me/problems/43

ソースコード

no46.py
#! /usr/bin/env python
# coding: utf-8


def main():
    first = raw_input()
    a, b = map(float, first.split())

    print('{0}'.format(int(-(-b // a))))


if __name__ == '__main__':
    main()

解説

入力値

a b

a, b ともに正の整数。1 ≦ a, b ≦ 10^9

6 ~ 7行目

first = raw_input()
a, b = map(float, first.split())

変数 first に標準入力の値を文字列型で代入。

変数 first の split メソッドを使い、スペースで分割されたリストにする。リストの要素を float 関数で浮動小数点数型に変換して a, b に代入。

9行目

print('{0}'.format(int(-(-b // a))))

この問題は「一歩aセンチ歩けるカメがいます。bセンチの区間を歩くのに最小何歩か」的な問題なので、b ÷ aを切り上げたものを標準出力すればいい。

Pythonでは // 演算子が切り捨て除算。今回やりたいのは切り上げ除算。
切り上げ除算用の演算子は用意されていないが、方法はある。次にいくつか例をあげる。

5.0 // 2 は2.5のコンマ以下切り捨てなので 2.0 になる(2.0 + 0.5 の0.5が消える)。
-5.0 // 2 は-2.5のコンマ以下切り捨てなので -3.0 になる(-3.0 + 0.5の0.5が消える)。
-(-5.0 // 2) で 3.0 になる(実質切り上げ)。

あとは浮動小数点数型から整数型にして print で出力すればいい。

他にも math ライブラリを使用する方法も考えられるが、こちらの方が手軽なので覚えておいて損はないと思う。