🌳Решение задачи про вырубку деревьев



Обозначим расстояние между деревьями после вырубки d. Тогда существует n – d х (m – 1) – m + 1 способов вырубить деревья. Чтобы найти все варианты, нужно просуммировать способы по всем d. Кроме того, нужно учесть 2 частных случая – когда количество оставшихся после вырубки деревьев равно 0 или 1.



1️⃣ вариант:

n, m = list(map(int, input().split()))

trees = 0

if m == 0:

trees = 1

elif m == 1:

trees = n

else:

for d in range(1, n):

trees += (n - d) // (m - 1)

print(trees)


2️⃣ вариант:

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

trees = 0

if m == 0:

trees = 1

elif m == 1:

trees = n

else:

for d in range(1, (n - 1) // (m - 1) + 1):

trees += n - (m - 1) * d

print(trees)




👉Ещё четыре олимпиадных задачи с решениями ищите в нашей статье👈