Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
#1

Найти минимальное время, за которое можно поджарить все котлеты - C++

10.07.2015, 16:36. Просмотров 1264. Ответов 29
Метки нет (Все метки)

Добрый день, хочу представить вашему вниманию небольшую задачку:

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

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

В единственной строке входного файла INPUT.TXT записано три натуральных числа: k, m, n, не превышающих 30000.

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

В единственную строку выходного файла OUTPUT.TXT нужно вывести единственное число – минимальное время, за которое можно поджарить все котлеты.


Собственно, задача вроде бы простая, но выдаёт ошибки на разных тестах. Нашёл 2 теста: k = 2, m =1, n = 3 и ответ равен 3 - это правильно или нет? Мне кажется, что должен быть равен 4-м. Также точно ещё числа: k = 99, m = 100, n 100. Ответ теста = 300. Корректны ли тесты? Мой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int k, m, n;
    cin >> k >> m >> n;
    if (k == 0 || m == 0 || n == 0)
        cout << 0 << endl;
    int counter = 0;
    while (n > 0)
    {
        n -= k;
        counter += m * 2;
    }
    cout << counter << endl;
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 16:36     Найти минимальное время, за которое можно поджарить все котлеты
Посмотрите здесь:
Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета C++
C++ Найти минимальное количество купюр, которое необходимо использовать, чтобы выдать сумму в n гривен
C++ Требуется по начальному расположению деталей на первом конвейере определить время, через которое все детали будут изготовлены
Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) C++
C++ Графы, найти минимальное время, необходимое для выполнения всех задач
C++ Найти минимальное время, необходимое для получения N копий одного документа на двух ксероксах
Минимальное число, которое делится нацело C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
10.07.2015, 18:45     Найти минимальное время, за которое можно поджарить все котлеты #16
Цитата Сообщение от Melvil Посмотреть сообщение
проверьте вашу программу на числах k = 2, n = 2, n = 1
Я уже посмотрел
Цитата Сообщение от D_Gon Посмотреть сообщение
C++
1
2
3
4
int counter = 2*n/k;//колличество жарок
    if ( !n%k )
        if ( counter )
            ++counter;
int counter = 2*n/k;//колличество жарок
2*1/2=1
if ( !n%k )
вот здесь ошибка,если есть остаток тогда добавим одну жарку т.е if ( n%k ) или if ( n%k!=0 )
1%2 =1
if ( counter ) непонятно зачем
++counter; 1+1=2
итого две жарки по две минуты, итого 4

Добавлено через 4 минуты
но вот что будет если вмещает три котлеты а жарить одну?
int counter = 2*n/k;//количество жарок
2*1/3=0
if ( !n%k )
вот здесь ошибка,если есть остаток тогда добавим одну жарку т.е if ( n%k ) или if ( n%k!=0 )
1%3 =1
if ( counter ) 0 т.е ложь не входим

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

Добавлено через 1 минуту
Цитата Сообщение от Melvil Посмотреть сообщение
if (!n%k)
и что проканало?
% не определен для double
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
10.07.2015, 18:54  [ТС]     Найти минимальное время, за которое можно поджарить все котлеты #17
Цитата Сообщение от ValeryS Посмотреть сообщение
и что проканало?
% не определен для double
Я так понял это обозначает:

C++
1
if (n%k == 0 )
А вообще фишка в том, что код ниже по факту - мусор и он не будет использоваться. Если посмотреть на моё первоначальное решение, то оно такое же, только без данного кода.

Цитата Сообщение от D_Gon Посмотреть сообщение
if ( !n%k )
* * * * if ( counter )
* * * * * * ++counter;
D_Gon
23 / 12 / 5
Регистрация: 09.07.2015
Сообщений: 47
10.07.2015, 18:59     Найти минимальное время, за которое можно поджарить все котлеты #18
Прошу прощения за предыдущий пост, вроде так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main(){
 
    int capacity, time, raw;
 
    cin >> capacity >> time >> raw;
 
    int counter = 2*( raw/capacity );
    
    if( counter != 0 && ( raw%capacity )*2 <= capacity )
        ++counter;
    else
        counter +=2;
 
    cout << counter*time << endl;
 
    return 0;
}
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
10.07.2015, 19:00  [ТС]     Найти минимальное время, за которое можно поджарить все котлеты #19
Кто меньше?:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
main()
{
    int k,c;
    double m, n;
    std::cin >> k >> m >> n;
    if (n <= k)
    {
        std::cout << m * 2;
        exit(0);
    }
    c = ceil((2 * n) / k);
    std::cout << c*m;
}
D_Gon,
Ошибка, только уже на первом тесте.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
10.07.2015, 19:01     Найти минимальное время, за которое можно поджарить все котлеты #20
Цитата Сообщение от Melvil Посмотреть сообщение
Я так понял это обозначает:
% это остаток от деления, определен для целочисленных
например
3/2 равно 1 и остаток 1
3%2 =1
если числа кратные то остаток 0
4/2=2
4%2=0
D_Gon
23 / 12 / 5
Регистрация: 09.07.2015
Сообщений: 47
10.07.2015, 19:02     Найти минимальное время, за которое можно поджарить все котлеты #21
C++
1
2
3
наверно на этом
if (k == 0 || m == 0 || n == 0)
        cout << 0 << endl;
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
10.07.2015, 19:03     Найти минимальное время, за которое можно поджарить все котлеты #22
Цитата Сообщение от Melvil Посмотреть сообщение
Кто меньше?:
Цитата Сообщение от Melvil Посмотреть сообщение
c = ceil((2 * n) / k);
* * std::cout << c*m;
C++
1
std::cout << ceil((2 * n) / k)*m;
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
10.07.2015, 19:07  [ТС]     Найти минимальное время, за которое можно поджарить все котлеты #23
Цитата Сообщение от ValeryS Посмотреть сообщение
% это остаток от деления, определен для целочисленных
например
3/2 равно 1 и остаток 1
3%2 =1
если числа кратные то остаток 0
4/2=2
4%2=0
Я имел ввиду
Цитата Сообщение от ValeryS Посмотреть сообщение
if ( !n%k )
==
Цитата Сообщение от Melvil Посмотреть сообщение
if (n%k == 0 )
Или нет?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
10.07.2015, 19:13     Найти минимальное время, за которое можно поджарить все котлеты #24
Цитата Сообщение от Melvil Посмотреть сообщение
Или нет?
Да
в Си любое число кроме 0 это ИСИНА 0-ЛОЖЬ
смотрим n%k допустим 3%2=1, 1 это ИСТИНА, !1 это ЛОЖЬ
берем
4%2 =0 ЛОЖЬ, !0 ИСТИНА
теперь
4%2==0 ИСТИНА
т.е
n%k == 0 и !n%k это две записи одного и того же
D_Gon
23 / 12 / 5
Регистрация: 09.07.2015
Сообщений: 47
10.07.2015, 19:16     Найти минимальное время, за которое можно поджарить все котлеты #25
Русские не сдаются:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
int main(){
 
    int capacity, time, raw;
 
    cin >> capacity >> time >> raw;
 
    int counter;
    
    if( raw%capacity == 0 )
        counter = 2*( raw/capacity );
    else if( raw/capacity != 0 && ( raw%capacity )*2 <= capacity )
        counter = 2*( raw/capacity ) + 1;
    else
        counter = 2*( raw/capacity ) + 2;
 
    cout << counter*time << endl;
 
    return 0;
}
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,735
10.07.2015, 19:18     Найти минимальное время, за которое можно поджарить все котлеты #26
Цитата Сообщение от D_Gon Посмотреть сообщение
time
переименуй
это слово зарезервировано в <time.h>
D_Gon
10.07.2015, 19:21
  #27

Не по теме:

да в этой задаче эта переменная лишняя пусть выделяется

Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
10.07.2015, 19:43  [ТС]     Найти минимальное время, за которое можно поджарить все котлеты #28
Цитата Сообщение от D_Gon Посмотреть сообщение
Русские не сдаются:
Поздравляю, Accepted
D_Gon
10.07.2015, 19:47
  #29

Не по теме:

Теперь можна и поесть.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 19:55     Найти минимальное время, за которое можно поджарить все котлеты
Еще ссылки по теме:
Найти минимальное количество первых букв, по которым можно различить слова из заданного набора C++
C++ Определить минимальное число пирамид которое требуется сложить
Минимальное количество байт, которое займёт отрицательное число C++
C++ Напечатать минимальное число, больше 500, которое нацело делится на 47
C++ Напечатать минимальное число, большее 200, которое нацело делится на 17

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ValeryS
10.07.2015, 19:55     Найти минимальное время, за которое можно поджарить все котлеты
  #30

Не по теме:

Цитата Сообщение от D_Gon Посмотреть сообщение
Теперь можна и поесть.
смотри опять опоздаешь
Цитата Сообщение от D_Gon Посмотреть сообщение
похоже я неудачнег ( решил немного перекусить )

Yandex
Объявления
10.07.2015, 19:55     Найти минимальное время, за которое можно поджарить все котлеты
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru