AtCoder ABC 134 B – Golden Apple Python解説

スポンサーリンク

Golden Apple

一列に並んだ N 本の林檎の木のうちいずれかに黄金の林檎が実ると言われています。
そこで、何人かの監視員を配置してどの林檎の木もいずれかの監視員に監視された状態にしたいです。
それぞれの監視員は N 本の木のうちいずれかに配置します。便宜上、これらの木に 1 から N までの番号をつけます。番号 i の木に配置された監視員は、番号が i-D 以上 i+D 以下のすべての林檎の木を監視します。
条件を満たすために少なくとも何人の監視員を配置する必要があるか求めてください。

AtCoder Beginner Contest 「Golden Apple」

監視員は i-D 以上 i+D 以下の番号の木を監視、つまり2D+1の木を監視することができるので、N本の木を2D+1で割れば必要最低限の監視員の数を求めることができます。

n, d = map(int, input().split())

if n % (2 * d + 1) == 0:
    print(n // (2 * d + 1))
else:
    print(n // (2 * d + 1) + 1)

N本の木を2D+1で割り、余りがでなければn // (2 * d + 1)、余りが出たらn // (2 * d + 1)+1が答えとなります。

AtCoderB問題

Posted by cheese