
Задача 2: Наборы пирожных На складе кондитерской фабрики хранятся пирожные двух видов — круассаны
и эклеры. Круассанов A штук, а эклеров — B штук. Есть неограниченный запас подарочных коробок, в каждую коробку можно положить только три пирожных. При этом требуется, чтобы в коробке были пирожные обоих видов, то есть в одну коробку можно положить два круассана и один эклер или один круассан и два эклера. Определите, можно ли упаковать все имеющиеся пирожные в коробки и выведите подходящий способ размещения пирожных по коробкам. Входные данные Программа получает на вход два целых числа A и B, записанных в отдельных строках. 1 ≤ A ≤ 109, 1 ≤ B ≤ 109. Выходные данные Если можно разложить все пирожные по коробкам в соответствии с условием задачи, программа должна вывести два целых числа. Первое число равно количеству коробок, в которых лежит два круассана и один эклер. Второе число равно количеству коробок, в которых лежит один круассан и два эклера. Если разложить все пирожные по коробкам нужным способом нельзя, программа должна вывести одно число −1. Система оценивания Решение, правильно работающее только для случаев, когда числа A и B не превосходят 100, будет оцениваться в 60 баллов. Примеры Ввод Вывод Пояснение 4 5 1 2 Нужно взять одну коробку с двумя круассанами и одним эклером и две коробки с одним круассаном и двумя эклерами. Всего получится 4 круассана и 5 эклеров. 5 3 −1 Разложить пирожные по коробкам нельзя.

Ответы на вопрос

Ответ:
язык: c++
#include<iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
if ((a + b) % 3)
{
cout << -1;
return 0;
}
int x = (2 * ((a + b) / 3) - a);
int y = (a + b) / 3 - x;
if (x >= 0 && y >= 0)
{
cout << y << " " << x;
}
else
{
cout << -1;
}
}



Данная задача решается путем перебора всех возможных комбинаций коробок и проверки их соответствия условию задачи.
Для начала, определим количество коробок, в которых лежат два круассана и один эклер. Пусть это количество равно x. Тогда количество коробок, в которых лежит один круассан и два эклера, будет равно (A - 2x) / 2.
Мы должны проверить, что оба числа (x и (A - 2x) / 2) являются целыми неотрицательными числами. Если это условие выполняется, мы можем упаковать все пирожные в коробки соответствующим образом. В противном случае, разложить пирожные по коробкам невозможно.
Вот решение на языке Python:
pythondef pack_pastries(A, B):
for x in range(A // 2 + 1):
if (A - 2 * x) % 2 == 0:
y = (A - 2 * x) // 2
if x + 3 * y == B:
return x, y
return -1
A = int(input())
B = int(input())
result = pack_pastries(A, B)
print(result[0], result[1])
Примеры использования:
makefileВвод:
4
5
Вывод:
1 2
Ввод:
5
3
Вывод:
-1
В первом примере мы можем взять одну коробку с двумя круассанами и одним эклером, а также две коробки с одним круассаном и двумя эклерами. Всего получится 4 круассана и 5 эклеров.
Во втором примере разложить пирожные по коробкам невозможно.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili