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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 22:05   #1
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию помогите с програмкой плиз

я щас изучаю С++ на одном из сайтов. там идёт теория по какой либо теме, а потом список задач. Так вот одна из задач. Задача вроде очень лёгкая, но только контест её не принимает выдаёт ошибку на 3 тесте. я её 100 пересматривал вроде всё работает, токо тест что-то не проходит.

На сковородку одновременно можно положить k котлет. Каждую котлету нужно с каждой стороны обжаривать m минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон n котлет? Вводятся 3 числа: k, m и n.

Вот мой код:

Код:
#include <iostream>

using namespace std;

int main()
{
    int k,m,n,vr=0,t;

    cin>>k>>m>>n;
    if ((n==0)||(k==0))cout<<vr; else
    if (n<=k)
        {
            vr=2*m; 
            cout<<vr;
        }
    t=n;
    if (n>k)
        while (n>0)
            {
                n-=k;
                vr+=2*m;
            }
    if ((!(k==0))&&(!(t==0))&&(t>k)) cout<<vr;

    return 0;
}
Даже добавил кучу никчёмных условии, но всё равно никак не проходит.
Кто может подсказать что нитак пишите плиз. буду благодарен

Последний раз редактировалось Alex26RusLink; 12.07.2009 в 22:08.
Alex26RusLink вне форума
Старый 12.07.2009, 22:29   #2
Cakeinpanic
Пользователь
 
Аватар для Cakeinpanic
 
Регистрация: 10.05.2009
Сообщений: 21
По умолчанию

Код:
void main(){
int k,m,n,time, temp;
temp=k/n;
time=(temp+1)*2*m;
}
Куда уж проще-то?
Надо посчитать количество загрузок сковородки и умножить его на вермя жарки с двух сторон
Cakeinpanic вне форума
Старый 13.07.2009, 07:59   #3
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Cakeinpanic Посмотреть сообщение
Код:
void main(){
int k,m,n,time, temp;
temp=k/n;
time=(temp+1)*2*m;
}
Куда уж проще-то?
Надо посчитать количество загрузок сковородки и умножить его на вермя жарки с двух сторон
Я согласен с тобой куда уж проще. То ко твой вариант тоже не проходит.
Alex26RusLink вне форума
Старый 13.07.2009, 08:26   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Alex26RusLink Посмотреть сообщение
Я согласен с тобой куда уж проще. То ко твой вариант тоже не проходит.
Как именно тот вариант не проходит? А то ведь из-за void main() может не проходить, т.к. по стандарту надо писать: int main()
pu4koff вне форума
Старый 13.07.2009, 12:30   #5
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию

да я знаю что по стандарту пишется int main()
void main() я заменил на int main() остальное всё оставил и не проходит.
и представленная программа будет работать неправельно в случае когда надо поджарить к примеру 3 котлеты и на сковороду можно ложить 3 котлеты. она выдаст результат в два раза больше того что требуется
Alex26RusLink вне форума
Старый 13.07.2009, 14:01   #6
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Оставь ссылку на контестер.
megachuhancer вне форума
Старый 13.07.2009, 15:36   #7
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию

вот сам сайт http://informatics.mccme.ru/moodle/
а тут эта задача http://informatics.mccme.ru/moodle/m...&chapterid=265
Alex26RusLink вне форума
Старый 13.07.2009, 16:20   #8
blunder
 
Регистрация: 13.07.2009
Сообщений: 5
По умолчанию

Програмка работает, и результаты выдает те, что надо.
(1, 1, 1 -> 2) и (2, 2, 1 -> 4)
А вот логика хромает. Жарить то надо по пол-котлеты. Программа которая выдасть правильный результат при любом раскладе должна реализовывать следующую логику (в Ваших обозначениях)
k*X >= 2*n;
vr = X*m;
Найти Х из приведенной формулы - дело техники.
А для примера детская задача - как поджарить три котлеты за три минуты, если на сковороде помещается только две, а каждую сторону нужно поджаривать одну минуту?
blunder вне форума
Старый 13.07.2009, 22:00   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

t=n*2;
x=(t/k+(t%k!=0))*m;

ошибся чуть
x=(n/k+(n%k!=0))*m*2;

Последний раз редактировалось MaTBeu; 13.07.2009 в 22:43.
rrrFer вне форума
Старый 14.07.2009, 06:49   #10
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Alex26RusLink, возрадуйся . У меня OK на этой задаче(если честно я и не сомневался - задача пустяковая).
Код:
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int k, m, n;
int main() {
   scanf(" %d %d %d", &k, &m, &n);
   printf("%d", (int)ceil((float)n * 2 / min(k, n)) * m);
   return 0;
}
Идея решения такова: описанный выше способ загрузки сковородки не является оптимальным. Я не знаю оптимальный способ, что не мешает мне посчитать минимальное время. Всего у нас n * 2 сторон котлет. Мы можем максимально поджаривать одновременно k, только надо учитывать, что мы не можем поджаривать более n сторон одновременно, т.к. каждую котлету можно поджаривать одновременно только с одной стороны.
pu4koff, если бы не компилилось, контестер так бы и написал: "Ошибка компиляции", а не "Неправильный ответ".

Последний раз редактировалось megachuhancer; 14.07.2009 в 07:05.
megachuhancer вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с програмкой на условный оператор, плиз BeaU Паскаль, Turbo Pascal, PascalABC.NET 3 04.06.2009 15:49
Помогите, пожалуйста, с програмкой! BeaU Паскаль, Turbo Pascal, PascalABC.NET 2 03.06.2009 17:49
Помогите с програмкой sergiksergik Помощь студентам 6 10.04.2009 22:52
c++ помогите разобраться с програмкой hen Общие вопросы C/C++ 8 31.03.2009 20:16
Помогите с програмкой (Repeat...Until)... Goldberg Паскаль, Turbo Pascal, PascalABC.NET 2 11.11.2008 15:50