【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 ライブラリを使用する方法も考えられるが、こちらの方が手軽なので覚えておいて損はないと思う。