Озеленение
Ограничение по времени: 1
секунда
Ограничение по памяти: 256
мегабайт
Администрация города решила разбить парк на пустыре площадью N×M
. В парке планируется высадить деревья. Для каждого дерева нужно выделить участок прямоугольной формы с целочисленными сторонами и площадью, равной S
.
Все участки должны быть равны, одинаково ориентированы, и их стороны должны быть параллельны сторонам пустыря.
Какое наибольшее количество деревьев можно высадить в парке?
def maximum_number_of_trees(N, M, S):
max_trees = 0
max_length = 0
max_width = 0
for length in range(1, N+1):
for width in range(1, M+1):
if length * width <= N * M and length * width == S:
trees = (N // length) * (M // width)
if trees > max_trees:
max_trees = trees
max_length = length
max_width = width
return max_trees, max_length, max_width
Функция `maximum_number_of_trees` принимает в качестве аргументов размеры площади N×M и площадь S. Она возвращает количество деревьев, максимальную длину и ширину участка прямоугольной формы, на котором можно высадить это количество деревьев.
Пример использования этой функции:
N = 10
M = 5
S = 6
max_trees, max_length, max_width = maximum_number_of_trees(N, M, S)
print("Maximum number of trees:", max_trees)
print("Maximum length:", max_length)
print("Maximum width:", max_width)
В этом примере на площади 10×5 можно высадить максимальное количество деревьев, равное 8, на участке прямоугольной формы размером 2×3.
Данный код работает за время O(N * M), где N и M - размеры площади, и поэтому будет эффективным для заданных ограничений на входные данные. Однако, при больших значениях N и M может потребоваться оптимизация алгоритма для достижения лучшей производительности.
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет