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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 15:20   #1
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию Транспорт

На экскурсию отправляется N учеников. Для доставки на место заказываются такси и автобусы. В автобус можно посадить не более 50 учеников, в такси - не более 4х. Стоимость автобуса - А рублей; такси - В рублей. Необходимо определить максимально оптимальный вариант.
На вход: количество учеников, цена автобуса и цена такси. На выход количество автобусов и такси в оптимальнейшем варианте (если вариантов несколько - вывести любой)
Безусловно цена автобуса больше цены такси.
Ну например 4 3 2 --- 0 1

Мой вариант
Код:
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int a,b,n,avto,tx,i=0,avt,ost;
    bool bb=false;
    cin>>n>>a>>b;
    avto=n/50;
    ost = n-avto*50;
    tx=ost/4;
    if (tx*4!=n-avto*50) tx+=1;
    if (tx*b>a) {avto+=1; cout<<avto<<" "<<0;}
    else cout<<avto<<" "<<tx;
   }
Но проходит не все тесты, а именно 2 из 12 не проходит.
boomeer вне форума Ответить с цитированием
Старый 28.10.2010, 17:27   #2
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

попробуй этот код...вроде ничего не упустил...разве что, при равных затратах не говорит об этом...

Код:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

void main ()
{
	setlocale (0,"");
	double n_st,price_A,price_T, mest_auto=50;
	double kol_auto = 0, kol_taxi = 0;
	cout<<"Введите количество учеников, цену автобуса, цену такси\n";
	cin>>n_st>>price_A>>price_T;
	do 
	{	
		cout<<"Цена автобуса не может быть ниже цены такси\n";
		cin>>price_A>>price_T;
	} while (price_A<=price_T);
	
	kol_auto = floor(n_st/mest_auto);
	double ost = fmod (n_st,mest_auto);//не влезли в автобус
	if (ceil(ost*price_T/4) > price_A)
		kol_auto++;
	else kol_taxi = ceil(ost/4);

	cout<<"Количество автобусов = "<<kol_auto<<"\n";
	cout<<"Количество такси = "<<kol_taxi<<"\n";
	getch ();

}
JeyKip вне форума Ответить с цитированием
Старый 28.10.2010, 17:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
kol_auto = floor(n_st/mest_auto);
я не проверял Ваш код, но, на первый взгляд, мне кажется, что Вы допускаете ошибку в алгоритме.
На автобусе имеет смысл увозить, когда цена автобуса меньше чем цена 13-ти такси...
Попробуйте Вашу программу на таких данных:
100 10000 1
вывод вашей программы?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2010, 17:35   #4
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Цитата:
Сообщение от boomeer Посмотреть сообщение
Но проходит не все тесты, а именно 2 из 12 не проходит.
Апдейт. подделал, 1 тест из 12 не проходит, все так же жду ваших вариантов.
boomeer вне форума Ответить с цитированием
Старый 28.10.2010, 17:36   #5
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я не проверял Ваш код, но, на первый взгляд, мне кажется, что Вы допускаете ошибку в алгоритме.
На автобусе имеет смысл увозить, когда цена автобуса меньше чем цена 13-ти такси...
Попробуйте Вашу программу на таких данных:
100 10000 1
вывод вашей программы?
это и исправил =) (исправил до того как прочел)

JeyKip Ваш код не проходит 3 теста; 1 из них как раз на "На автобусе имеет смысл увозить, когда цена автобуса меньше чем цена такси... "

Последний раз редактировалось boomeer; 28.10.2010 в 17:43.
boomeer вне форума Ответить с цитированием
Старый 28.10.2010, 17:48   #6
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

Цитата:
Безусловно цена автобуса больше цены такси.
я думал, что обязательно нужно, чтобы цена автобуса была не ниже цены такси...а какой у тебя тест не проходит...напиши числа...!!
JeyKip вне форума Ответить с цитированием
Старый 28.10.2010, 17:52   #7
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Цитата:
Сообщение от JeyKip Посмотреть сообщение
я думал, что обязательно нужно, чтобы цена автобуса была не ниже цены такси...а какой у тебя тест не проходит...напиши числа...!!
Тестов не знаю, а цена автобуса и больше при 100 10000 1. Просто при таких входных данных оптимально взять 25 такси
boomeer вне форума Ответить с цитированием
Старый 28.10.2010, 17:55   #8
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Как можно объединить условия в моем алгоритме, а то кажется очень примитивно сделал?
Код:
cin>>n>>a>>b;
           avto=n/50;
           ost = n-avto*50;
           tx=ost/4;
           if (tx*4!=n-avto*50) tx+=1;
           nn=n/4;//вот это
           if (nn*4!=n) nn+=1;//вот это
                 if (nn*b<avto*a) cout<<0<<" "<<nn;//вот это
Сдал

Последний раз редактировалось boomeer; 28.10.2010 в 19:03.
boomeer вне форума Ответить с цитированием
Старый 28.10.2010, 18:19   #9
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

нужно поставить проверку не на 13, а если цена автобуса больше 12.5 цен такси, т.к. 1*А = 50чел, 12.5*Т = 50ч...тупить могло, если цена автобуса колебалась между 12 и 13 такси...

Код:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

void main ()
{
	setlocale (0,"");
	double n_st,price_A,price_T, mest_auto=50;
	double kol_auto = 0, kol_taxi = 0;
	cout<<"Введите количество учеников, цену автобуса, цену такси\n";
	cin>>n_st>>price_A>>price_T;
	
	if (price_A < 12.5*price_T){
	kol_auto = floor(n_st/mest_auto);
	double ost = fmod (n_st,mest_auto);//не влезли в автобус
	if (ceil(ost*price_T/4) > price_A)
		kol_auto++;
	else kol_taxi = ceil(ost/4);
	} else kol_taxi = ceil(n_st/4);

	cout<<"Количество автобусов = "<<kol_auto<<"\n";
	cout<<"Количество такси = "<<kol_taxi<<"\n";
	getch ();
}
пиши, если не сработает, и на каких данных...!!!
JeyKip вне форума Ответить с цитированием
Ответ


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