Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

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

Gogrod Ученик (130), закрыт 2 месяца назад
Летний сезон
Наступил летний сезон, и управление транспорта города Л дало распоряжение заменить у всех городских автобусов зимние шины на летние.

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

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

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

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

4 1 1

9 -1

30 5 7
Лучший ответ
Сергей Степанов Гений (51205) 3 месяца назад
 #include  

int main()
{
int n1 = 4, n2 = 6;
size_t n;
std::cin >> n;
if (n < 4 || n & 1) { std::cout << -1; return 0; }
size_t a_min = n / n2, a_max = n / n1;
if (n - a_min * n2) ++a_min;
std::cout << a_min << " " << a_max;
}
ПапаГений (86290) 3 месяца назад
А что, нельзя было так?
 if (n < 4 || n & 1) std::cout << -1;
else std::cout << (n + n2 - 1) / n2 << ' ' << n / n1 << endl;
Сергей Степанов Гений (51205) Папа, Можно но у меня нет определенного плана заранее, поэтому я всего лишь Просветленный и пользуюсь "костылями")
ТрифонУченик (119) 3 месяца назад
не работает
Остальные ответы
Professional Professional Мудрец (14332) 3 месяца назад
Эту задачу можно решить с помощью математического анализа. Давайте рассмотрим два возможных случая: когда все автобусы имеют 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`, и он выдаст вам минимальное и максимальное количество автобусов.
GogrodУченик (130) 3 месяца назад
не работает
VitnessПросветленный (34864) 3 месяца назад
Рассмотрим два возможных случая и забьем на третий.. эх чатгпт...
ПапаГений (86290) 3 месяца назад
Не надоело делать из себя посмешище?
Professional Professional Мудрец (14332) Папа, посмешище тут только ты
user user Просветленный (45983) 3 месяца назад
Алгоритм решения задачи:

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")
```
GogrodУченик (130) 3 месяца назад
не работает
user user Просветленный (45983) Gogrod, Ну GPT, ошибся... Искусственный интеллект, еще не доработан....
GogrodУченик (130) 3 месяца назад
пан
GogrodУченик (130) 3 месяца назад
бл 18 минут до конца
Похожие вопросы