ABC134-B - Golden Apple を解く
ABC134-B - Golden Apple
N 本の木があり、1 から N まで番号が振られている
これらの木に対し監視員を配置する
1 人の 監視員は番号 i の木のに配置させたとき
番号 i - D 以上 i + D 以下のすべての木を監視することができる
全ての木を監視するためには最低何人の監視員が必要かを求める
一人の監視員は番号 i - D 以上 i + D 以下の木を監視できる
つまり、i + D - ( i - D ) + 1 = ( 2D + 1 ) 本の木を監視することができる
1人 ( 2D + 1 ) 本の木を監視できるということは
N 本の木を監視するには N / ( 2D + 1 ) 人の監視員が必要であるということになる
このとき、答えが小数になる場合は切り上げる必要があることに注意する
以上を踏まえて書いたコードを以下に示す
提出したコード
# 入力 N,D=map(int,input().split()) # 出力 print(-(-N//(2*D+1)))
上記では、割る数を負の数にすることで
商を切り上げることができることを利用している
>>> 8//3 2 >>> -8//3 -3 >>> -(-8//3) 3
提出結果はACでした