Задача 6: Наборы пирожных

На складе кондитерской фабрики хранятся пирожные двух видов — круассаны и эклеры. Круассанов A штук, а эклеров — B штук. Есть неограниченный запас подарочных коробок, в каждую коробку можно положить только три пирожных. При этом требуется, чтобы в коробке были пирожные обоих видов, то есть в одну коробку можно положить два круассана и один эклер или один круассан и два эклера.


Определите, можно ли упаковать все имеющиеся пирожные в коробки и выведите подходящий способ размещения пирожных по коробкам.


Входные данные

Программа получает на вход два целых числа A и B, записанных в отдельных строках. 1 ≤ A ≤ 109, 1 ≤ B ≤ 109.


Выходные данные

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


Если разложить все пирожные по коробкам нужным способом нельзя, программа должна вывести одно число −1.


Система оценивания

Решение, правильно работающее только для случаев, когда числа A и B не превосходят 100, будет оцениваться в 60 баллов.

Приложения:

Ответы

Ответ дал: grisha15610
17

Ответ:

Программа написана на 28 балов из 100, но пока это лучший результат, язык Python

a = int(input())

b = int(input())

if (a + b) % 3 != 0:

   print(-1)

elif (a + b)/3 > a or (a + b)/3 > b:

   print(-1)

elif (a + b)/3 == a:

   print(0)

   print((a + b)/3)

elif (a + b)/3 == b:

   print((a + b)/3)

   print(0)

else:

   if a > b:

       print(int(((a + b)/3)- (((a + b)/3)-(a - b))))

       print(int(((a + b)/3)-(a - b)))

   if b > a:

       print(int(((a + b)/3)- (((a + b)/3)-(b - a))))

       print(int(((a + b)/3)-(b - a)))


zhandrew2004: от души
dannybogom: это не верно
Auuutdyy: 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
Auuutdyy: 90 баллов
dfjydjy: КАКОЙ ЯЗЫК
Ответ дал: slysnenko
10

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 баллов


slysnenko: язык python
Auuutdyy: 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
Auuutdyy: 90 баллов
dfjydjy: ЯЗЫК КАКОЙ?
Вас заинтересует