Писал по поводу этой задачки, ответ который был дан оказался неверным и не работал
Задачка:
А. Чаепитие
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
На свой день рождения Вася решил пригласить всех своих друзей. Приняли приглашение и подтвердили участие в вечеринке по случаю дня рождения N человек. Вася даже придумал программу вечера для своих друзей: сначала будет чаепитие с тортом, затем игры и конкурсы. Чтобы рассадить всех своих друзей за столы для чаепития и потратить при этом меньше усилий по сервировке праздничных столов, Вася решил посчитать минимальное их количество. Оказалось, что в распоряжении Васи имеется K4 четырехместных стола и K2 — двухместных. Посчитайте, какое минимальное количество столов потребуется, чтобы рассадить всю компанию.
Формат ввода
В первой и единственной строке вводят числа N, K4, K2 — количество друзей Васи, подтвердивших участие в вечеринке, количество четырехместных столов и количество двухместных столов, которые есть в распоряжении Васи соответственно (1 ≤ N ≤ 1018, 0 ≤ K2, K4 ≤ 1018).
Формат вывода
Выведите одно число — минимальное количество столов, за которые можно рассадить всех друзей. Если же разместить всех друзей не получится, выведите -1.
Пример
Ввод
10 5 3
Вывод
3
Ответы
Ответ:
Для решения этой задачи нужно сначала понять, какое максимальное количество людей можно рассадить за один стол. Четырехместный стол может вместить 4 человека, а двухместный - 2 человека. Таким образом, если у нас есть только четырехместные столы, то мы можем рассадить только кратное 4 количество людей. Если у нас есть только двухместные столы, то мы можем рассадить только кратное 2 количество людей. Если же у нас есть и четырехместные, и двухместные столы, то мы можем рассадить любое количество людей, кратное 2, 4 или 6.
Теперь рассмотрим несколько случаев:
1. Если количество друзей Васи кратно 4, то мы можем использовать только четырехместные столы. В этом случае минимальное количество столов будет равно N / 4. Если при этом количество четырехместных столов K4 меньше, чем N / 4, то мы не сможем рассадить всех друзей и ответ будет -1.
2. Если количество друзей Васи кратно 2, но не кратно 4, то мы можем использовать только двухместные столы. В этом случае минимальное количество столов будет равно N / 2. Если при этом количество двухместных столов K2 меньше, чем N / 2, то мы не сможем рассадить всех друзей и ответ будет -1.
3. Если количество друзей Васи кратно 6, то мы можем использовать как четырехместные, так и двухместные столы. В этом случае мы можем сначала рассадить всех друзей за четырехместные столы, а затем использовать двухместные столы для тех, кто остался. Минимальное количество столов будет равно (2 * K4 + K2 + 3) / 3, где 2 * K4 - количество мест за четырехместными столами, K2 - количество мест за двухместными столами, а 3 - количество мест за одним столом.
4. Если количество друзей Васи не кратно 2, 4 или 6, то мы не сможем рассадить всех друзей и ответ будет -1.
Вот код на Python, который реализует эту логику:
```python
n, k4, k2 = map(int, input().split())
if n % 4 == 0:
# можем использовать только четырехместные столы
if k4 >= n // 4:
print(n // 4)
else:
print(-1)
elif n % 2 == 0:
# можем использовать только двухместные столы
if k2 >= n // 2:
print(n // 2)
else:
print(-1)
elif n % 6 == 0:
# можем использовать и четырехместные, и двухместные столы
m = 2 * k4 + k2
if m >= n:
print((2 * k4 + k2 + 2) // 3)
else:
print(-1)
else:
# не можем рассадить всех друзей
print(-1)
```
Надеюсь, это поможет вам решить задачу!
Объяснение: