М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
alisher0901
alisher0901
05.09.2022 05:38 •  Информатика

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

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

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

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

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

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

Примеры
Ввод

Вывод

Пояснение

4
5

1 2

Нужно взять одну коробку с двумя круассанами и одним эклером и две коробки с одним круассаном и двумя эклерами. Всего получится 4 круассана и 5 эклеров.

5
3

−1

Разложить пирожные по коробкам нельзя.

👇
Ответ:
Полина56
Полина56
05.09.2022

var

  A, B, K, R : longint;

begin

readln(A, B);

if (A mod 2 = 1) and (B mod 2 = 1) then

  writeln('-1');

if (A mod 2 = 0) and (B mod 2 = 0) and

     ((A div 2 <> B) or (B div 2 <> A)) then

  writeln('-1');

if (A mod 2 = 0) and (B mod 2 = 0) and

     ((A div 2 = B) or (B div 2 = A)) then

  if A > B then

     writeln(B, '0')

  else

     writeln('0', A);

if (A mod 2 = 1) and (B mod 2 = A) then begin

  A := A-1;

  B := B-2;

  if (A div 2 = B) or (B div 2 = A) then

     if A > B then

        writeln(B, '0')

     else

        writeln('0', A);

end;

if (B mod 2 = 1) and (A mod 2 = B) then begin

  B := B-1;

  A := A-2;

  if (B div 2 = A) or (A div 2 = B) then

     if B > A then

        writeln(B, '0')

     else

        writeln('0', A)

end;

end.

На Всё что могу.

4,6(95 оценок)
Ответ:
19942424
19942424
05.09.2022

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)

Объяснение:

набрал

4,7(52 оценок)
Открыть все ответы
Ответ:
DashaZhelezniak
DashaZhelezniak
05.09.2022
Думаю, логика у нас здесь будет такая: нужно разложить данные три числа на простые сомножители. Получится:
132 = 2 * 2 * 3 * 11
106 = 2 * 53
134 = 2 * 67
Что у них есть общего - то можно откинуть, потому что количество кругов будет при общих сомножителях делиться без остатка. Собрать в ответ нужно следующее:
от первого - 2 * 2 * 3 * 11
от второго - 53 (двойку не берём, потому что она уже взята с первым)
от третьего - 67 (двойку опять не берём)

Получается: 2 * 2 * 3 * 11 * 53 * 67 = 468732 секунды. Это, как я думаю, ответ.

При этом (чисто для сведения), до момента встречи:
первый намотает 3551 круг
второй - 4422 круга
третий - 3498 кругов.
4,5(65 оценок)
Ответ:
chernov5
chernov5
05.09.2022
/*
C++ compiler
gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
Copyright (C) 2015 Free Software Foundation, Inc.
*/

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int count = 0;
    cout <<"Введите количество призывников: ";
    cin >>count;
    if (count>17) count=17;
    vector<int> tanks(count);
    for (unsigned i=0; i<tanks.size(); i++) cin >>tanks[i];
    int min=300, max=0;
    for (unsigned i=0; i<tanks.size(); i++)
    {
        if (min>tanks[i]) min=tanks[i];
        if (max<tanks[i]) max=tanks[i];
    }
    int cnt=0;
    for (unsigned i=0; i<tanks.size(); i++)
    {
        if ((tanks[i]!=min) and (tanks[i]!=max)) cnt++;
    }

    cout <<cnt <<endl;
}
4,6(23 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ