Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2018, 16:50   #1
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию Разбойники Джон и Боб ограбили караван и в качестве добычи получили три золотых слитка - C++

не проходит все тесты

Разбойники Джон и Боб ограбили караван и в качестве добычи получили три золотых слитка. Решив поделить добычу Джон и Боб взвесили слитки и выяснили, что они весят x1, x2 и x3 фунтов, соответственно.

Теперь Джон и Боб хотят поделить слитки так, чтобы каждому из них досталось равное количество золота. Им не хотелось бы пилить слитки, но деваться некуда. Обсудив ситуацию, они решили, что если смогут, поделят добычу как есть, а если нет, то сумеют-таки распилить один слиток на две части. Распилить два или все три слитка они уже не смогут.

Помогите Джону и Бобу выбрать, какой слиток распилить на две части, и на какие части его следует распилить, чтобы после этого можно было поделить добычу поровну.




В выходной файл OUTPUT.TXT выведите -1, если невозможно распилить один слиток таким образом, что после этого можно поделить золото поровну. Если Джон и Боб и так могут поделить золото поровну, выведите 0. В противном случае на первой строке выведите число 1, если следует распилить первый слиток, 2, если следует распилить второй слиток, либо 3, если следует распилить третий слиток. На второй строке выведите два положительных целых числа: веса частей, на которые следует распилить слиток. В сумме две части должны давать исходный вес слитка. Так как суммарный вес золота чётен, слиток всегда требуется распиливать на части, имеющие целый вес. Если возможных решений несколько, выведите любое.

Код:
#include <iostream>
#include<math.h>>
 
using namespace std;
int main (){
    int a,b,c,k,m,v,z,j,f,n;
    z=0;
    j=0;
    f=0;
cin>>a;
cin>>b;
cin>>c;
v=a+b+c;
k=(a+b+c)/2;
if(v==3)
     cout<<"-1";
else if (a%2==0&&b%2==0&&c%2==0)
    cout<<"0";
    else
    {
 
        if(a>=b&a>=c){
        z=a/2;
        j=a-z;
        printf("2\n%d,%d",z,j);
        }
else if (b>=a&b>=c){
z=b/2;
j=b-z;
printf("3\n%d,%d",j,z);
        }
  else
  {
f=c/2;
n=c-f;
printf("3\n%d,%d",f,n);
}
 
    }
 
}
Александр121 вне форума Ответить с цитированием
Старый 10.02.2018, 17:10   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Если у вас a,b,c кол-во слитков, то, очевидно,
Код:
if(v==3)
     cout<<"-1";
не верно. Один берет x1,x2 слитки, а второй x3 - в итоге у каждого по 3 фунта золота.
p51x вне форума Ответить с цитированием
Старый 10.02.2018, 18:03   #3
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию

всего ведь два ковбоя.если количество слитков равно 3 то только в этом случае не возможно их попилить во всех остальных можно почему не верно?

Последний раз редактировалось Александр121; 10.02.2018 в 18:07.
Александр121 вне форума Ответить с цитированием
Старый 10.02.2018, 18:32   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Один берет x1,x2 слитки, а второй x3 - в итоге у каждого по 3 фунта золота.
По условию:
Цитата:
Сообщение от Александр121 Посмотреть сообщение
Теперь Джон и Боб хотят поделить слитки так, чтобы каждому из них досталось равное количество золота.
Цитата:
Сообщение от Александр121 Посмотреть сообщение
Если Джон и Боб и так могут поделить золото поровну, выведите 0.
p51x вне форума Ответить с цитированием
Старый 10.02.2018, 21:51   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Во-первых, количество слитков всегда 3 и так (по условию), а задаются их массы. Во-вторых, сумма масс не может быть равной 3, так как "суммарный вес золота чётен". В-третьих, в текущем коде в двух ветках if'а выводится "2". В-четвертых, почему слиток распиливается пополам, если можно и нужно пилить на неравные части.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.02.2018 в 22:36.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как решить матрицу три на три на Lisp Lektorfuja Помощь студентам 0 15.12.2016 18:46
C++. Вывести список студентов которые получили 3 по третьему экзамену Timur76r Помощь студентам 1 21.05.2015 15:25
даны три квадратные матрицы третьего порядка.вывести на экран ту из них,норма которой наименьшая. в качестве нормы матрицы взять м ayoka Паскаль, Turbo Pascal, PascalABC.NET 0 16.05.2012 18:28
как создать матрицу три на три в мемо (делфи) Lordigan Помощь студентам 0 15.03.2010 18:37
Программисты получили право на льготы wall66 Свободное общение 4 19.11.2009 13:06