Задача 6: Наборы пирожных
На складе кондитерской фабрики хранятся пирожные двух видов — круассаны и эклеры. Круассанов A штук, а эклеров — B штук. Есть неограниченный запас подарочных коробок, в каждую коробку можно положить только три пирожных. При этом требуется, чтобы в коробке были пирожные обоих видов, то есть в одну коробку можно положить два круассана и один эклер или один круассан и два эклера.
Определите, можно ли упаковать все имеющиеся пирожные в коробки и выведите подходящий способ размещения пирожных по коробкам.
Входные данные
Программа получает на вход два целых числа A и B, записанных в отдельных строках. 1 ≤ A ≤ 109, 1 ≤ B ≤ 109.
Выходные данные
Если можно разложить все пирожные по коробкам в соответствии с условием задачи, программа должна вывести два целых числа. Первое число равно количеству коробок, в которых лежит два круассана и один эклер. Второе число равно количеству коробок, в которых лежит один круассан и два эклера.
Если разложить все пирожные по коробкам нужным способом нельзя, программа должна вывести одно число −1.
Система оценивания
Решение, правильно работающее только для случаев, когда числа A и B не превосходят 100, будет оцениваться в 60 баллов.
Домашние задания: Информатика
Задача по программированию на любом языке, желательно на питоне или паскале. Хватит даже просто алгоритма решения
A = int(input())
B = int(input())
C = 0
D = 0
if (A + B) % 3 != 0 or A * 2 < B or B * 2 < A:
print(-1)
elif A > B:
C = A - B
A = B
B -= C
A -= C
print((C + A // 3), (D + A // 3))
else:
D = B - A
B = A
B -= D
A -= D
print((C + A // 3), (D + A // 3))
Ответ на 100 баллов!!!
B = int(input())
C = 0
D = 0
if (A + B) % 3 != 0 or A * 2 < B or B * 2 < A:
print(-1)
elif A > B:
C = A - B
A = B
B -= C
A -= C
print((C + A // 3), (D + A // 3))
else:
D = B - A
B = A
B -= D
A -= D
print((C + A // 3), (D + A // 3))
Ответ на 100 баллов!!!
Natalia Corjan
Какой язык то?
Алёна Гайнутдинова
ошибка
общее количество пирожных должно быть кратно 3, т. е. (А+В) mod 3 = 0
А не может быть меньше В/2, иначе не хватит круассанов, даже если их класть по 1 штуке, аналогично В не может быть меньше А/2.
Общее количество коробок (А+В) /3
Если не получили, что разложить нельзя, то для определения количества коробок определим, чего меньше:
if A=B then begin
коробок поровну, по (А+В) /6 каждого вида
end else if A<B then begin
Из них с 1 круассаном и 2 эклерами - (А+(В div 2)) div 3, назовем это К1
Тогда с 2 круассанами и 1 эклером (А+В) /3 - К1
end else begin
Из них с 1 эклером и 2 круассанами - (В+(А div 2)) div 3, назовем это Е1
Тогда с 2 эклерами и 1 круассаном (А+В) /3 - Е1
end;
Проверьте, должно работать при любом количестве
А не может быть меньше В/2, иначе не хватит круассанов, даже если их класть по 1 штуке, аналогично В не может быть меньше А/2.
Общее количество коробок (А+В) /3
Если не получили, что разложить нельзя, то для определения количества коробок определим, чего меньше:
if A=B then begin
коробок поровну, по (А+В) /6 каждого вида
end else if A<B then begin
Из них с 1 круассаном и 2 эклерами - (А+(В div 2)) div 3, назовем это К1
Тогда с 2 круассанами и 1 эклером (А+В) /3 - К1
end else begin
Из них с 1 эклером и 2 круассанами - (В+(А div 2)) div 3, назовем это Е1
Тогда с 2 эклерами и 1 круассаном (А+В) /3 - Е1
end;
Проверьте, должно работать при любом количестве
на 60 баллов
решение:
a = int(input())
b = int(input())
btn = True
flag = True
count1 = 0
count2 = 0
big = False
if ((a + b) % 3) != 0:
print(-1)
flag = False
while flag:
if a > 100 and b > 100:
big = True
a = a / 10
b = b / 10
if a > b or a == b and a != 0 and b != 0:
a -= 2
b -= 1
count1 += 1
elif a < b:
a -= 1
b -= 2
count2 += 1
elif a == 0 and b == 0:
if big:
print(count1 * 10, count2 * 10)
else:
print(count1, count2)
flag = False
if a < 0 or b < 0:
print(-1)
flag = False
решение:
a = int(input())
b = int(input())
btn = True
flag = True
count1 = 0
count2 = 0
big = False
if ((a + b) % 3) != 0:
print(-1)
flag = False
while flag:
if a > 100 and b > 100:
big = True
a = a / 10
b = b / 10
if a > b or a == b and a != 0 and b != 0:
a -= 2
b -= 1
count1 += 1
elif a < b:
a -= 1
b -= 2
count2 += 1
elif a == 0 and b == 0:
if big:
print(count1 * 10, count2 * 10)
else:
print(count1, count2)
flag = False
if a < 0 or b < 0:
print(-1)
flag = False
var a, b, j, m, n: longint;
begin
readln(a, b);
j := abs(a - b);
if a > b then begin
m := b - j;
n := m
end else begin
n := a - j;
m := n
end;
if (m mod 3 = 0) then begin
if a > b then
write((m div 3 + j), ' ', (m div 3))
else
write((m div 3), ' ', (m div 3 + j));
end else
write(-1)
end.
begin
readln(a, b);
j := abs(a - b);
if a > b then begin
m := b - j;
n := m
end else begin
n := a - j;
m := n
end;
if (m mod 3 = 0) then begin
if a > b then
write((m div 3 + j), ' ', (m div 3))
else
write((m div 3), ' ', (m div 3 + j));
end else
write(-1)
end.
Жертвам ЕГЭ принцепиально не помогаю. Не зная этого ЕГЭ не сдашь
Gena Kardanov
эмммммммм
какое ЕГЭ чел 8 класс
какое ЕГЭ чел 8 класс
a = int(input())
b = int(input())
if (a + b) % 3 != 0:
print(-1)
else:
if (a // b == 2) or (b // a == 2):
if a % 2 < b % 2:
print((a + b) // 3, 0)
elif a % 2 > b % 2:
print(0, (a + b) // 3)
else:
print(-1)
else:
if (b - a == b % a) or (a - b == a % b):
print(a // 3, (b - (a // 3)) // 2)
else:
print(-1)
36 баллов)
b = int(input())
if (a + b) % 3 != 0:
print(-1)
else:
if (a // b == 2) or (b // a == 2):
if a % 2 < b % 2:
print((a + b) // 3, 0)
elif a % 2 > b % 2:
print(0, (a + b) // 3)
else:
print(-1)
else:
if (b - a == b % a) or (a - b == a % b):
print(a // 3, (b - (a // 3)) // 2)
else:
print(-1)
36 баллов)
Деми Мур Мур
на каком языке ?
Похожие вопросы
- Срочно Помогите написать программу по задаче (на любом языке программирования)
- Объясните подробно задачу 1 и постройте алгоритм решения
- Помогите пожалуйста решить задачу по программированию (Pasсal ABC.net).
- Помогите пожалуйста с алгоритмом. Его надо переписать на язык программирования - паскаль.. Срочно надо.
- Прошу помочь с двумя сложными задачами по "Рекурсивным Алгоритмам" по информатике 9 класс, нужно с решением
- Информатика 8 класс. Начало программирования на языке Паскаль.
- Помогите Христа ради! Язык программирования паскаль! Нужно составить программы! Помогите, пожалуйста, а то меня убьют!
- Помогите Христа ради! Язык программирования паскаль! Нужно составить программы. Помогите, пожалуйста, а то меня убьют!
- Помогите найти ошибки в программировании на языке паскаль
- Помогите! Дайте образец решения следущих задач (Паскаль)