C/C++

C++ или Питон прост решите

Летний сезон
Наступил летний сезон, и управление транспорта города Л дало распоряжение заменить у всех городских автобусов зимние шины на летние.

После несложных подсчетов выяснилось, что для замены потребуется ровно n
шин. Известно, что в городе Л имеются автобусы двух типов: с 4
колесами и с 6
колесами. Однако, вы не знаете, сколько именно автобусов находятся в распоряжении управления транспорта. Поэтому вы решили определить, какое минимальное и какое максимальное количество автобусов может быть в городе, зная, что суммарное количество колес у всех автобусов города равно n
.

Формат входных данных
Единственная строка содержит одно целое число n
(1≤n≤1018
) — суммарное количество колес у автобусов города Л.

Формат выходных данных
Выведите два целых числа x
и y
(1≤x≤y
) — минимальное и максимальное возможное количество автобусов, находящихся в городе Л.

В случае, если для данного n
не существует подходящего количества автобусов, выведите число −1
.
Ввод Вывод

4 1 1

9 -1

30 5 7
Christian Miller
Christian Miller
130
 #include  

int main()
{
int n1 = 4, n2 = 6;
size_t n;
std::cin >> n;
if (n < 4 || n & 1) { std::cout
Рома Калинин
Рома Калинин
51 417
Лучший ответ
Михаил Арнаутов А что, нельзя было так?
 if (n < 4 || n & 1) std::cout							
Николай Кузнецов не работает
Алгоритм решения задачи:

1. Сначала проверяем, является ли число n кратным 2 или нечетным. Если n нечетное, то нет возможности собрать автобусы с целочисленным числом колес, поэтому выводим число -1.

2. Далее рассматриваем случаи, когда n четное. Проверяем, если число n делится на 4, то минимальное и максимальное количество автобусов равно n/4 и n/2 соответственно.

3. Если число n не делится на 4, то проверяем, можно ли разделить число n на два четных числа (x и y), сумма которых равна n. Для этого мы ищем наибольшее четное число, которое меньше или равно n/2 (это будет число y), а затем вычитаем это значение из числа n, чтобы найти число x.

4. Если мы не смогли найти два четных числа, сумма которых равна n, то нет возможности собрать автобусы с целочисленным числом колес, поэтому выводим число -1.

Реализация на языке Python:
```
n = int(input())

if n % 2 == 1: # проверяем, является ли n нечетным числом
print("-1")
else:
if n % 4 == 0: # если n делится на 4, то минимальное и максимальное количество автобусов равно n/4 и n/2 соответственно
print(int(n/4), int(n/2))
else:
y = n // 2
while y % 2 != 0: # ищем наибольшее четное число, которое меньше или равно n/2
y -= 1
x = n - y
if x % 2 == 0 and x > 0: # проверяем, полученное x - четное число и больше 0
print(int(x / 2), int(y / 2))
else:
print("-1")
```
Christian Miller не работает
Christian Miller бл 18 минут до конца
Эту задачу можно решить с помощью математического анализа. Давайте рассмотрим два возможных случая: когда все автобусы имеют 4 колеса и когда все автобусы имеют 6 колес.

1. Случай с автобусами, имеющими 4 колеса:
Каждый автобус имеет 2 пары колес, поэтому общее количество автобусов будет равно n/4. Однако, чтобы получить минимальное количество автобусов, нужно убедиться, что n делится на 4 без остатка. Если это не так, то минимальное количество автобусов будет равно n/4 + 1. Максимальное количество автобусов всегда будет равно n/4.

2. Случай с автобусами, имеющими 6 колес:
Каждый автобус имеет 3 пары колес, поэтому общее количество автобусов будет равно n/6. Опять же, нужно убедиться, что n делится на 6 без остатка, чтобы получить минимальное количество автобусов. Если это не так, то минимальное количество автобусов будет равно n/6 + 1. Максимальное количество автобусов всегда будет равно n/6.

Используя эти правила, можно решить задачу. Давайте преобразуем это в код на Python:

```python
n = int(input())

# Проверяем случай с автобусами, имеющими 4 колеса
if n % 4 == 0:
min_buses_4 = n // 4
else:
min_buses_4 = n // 4 + 1

# Проверяем случай с автобусами, имеющими 6 колес
if n % 6 == 0:
min_buses_6 = n // 6
else:
min_buses_6 = n // 6 + 1

# Проверяем, существует ли подходящее количество автобусов
if min_buses_4 * 4 > n and min_buses_6 * 6 > n:
print(-1)
else:
print(min_buses_4, min_buses_6)
```

Вы можете запустить этот код, введя значение `n`, и он выдаст вам минимальное и максимальное количество автобусов.
Christian Miller не работает
Akmal Umarov Рассмотрим два возможных случая и забьем на третий.. эх чатгпт...
Михаил Арнаутов Не надоело делать из себя посмешище?