Регистрация
27 Июн 2013
Сообщения
73
Репутация
11
Спасибо
1
Монет
0
Задача:На сковородку одновременно можно положить k котлет. Каждую котлету нужно с каждой стороны обжаривать m минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон n котлет? Вводятся 3 числа: k, m и n. Все числа не превосходят 32000. Нужно вывести время, за которое все котлеты будут обжарены.Пример ввода:

2

4

3Пример вывода:

12Мой код: import java.util.Scanner;



class MyProgram {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

int capacity = scan.nextInt(), fryingTimePerSide = scan.nextInt(), numberOfCutlets = scan.nextInt();

int numberOfParties;

if (numberOfCutlets % capacity == 0) {

numberOfParties = numberOfCutlets / capacity;

} else {

numberOfParties = numberOfCutlets / capacity + 1;

}

System.out.println(numberOfParties * (fryingTimePerSide * 2));

}

} Мой код выводит: 16

Проблема:

Не понимаю как получилось 12 в примере. Допустим сковорода вмещает в себя 2 котлеты, которые нужно обжарить с двух сторон, по 4 минуты. Т.е. на одну партию уходит 8 минут. Если котел 3: мы тратим 8 минут на первую партию и столько же должны на вторую. Ведь и так, и так на каждую партию должно уходить по 8 минут, для обжарки с двух сторон. Так почему же там получилось 12? Объясните пожалуйста, я не могу понять как это получается. Заранее спасибо.
 
Кладём на сковородку 2 котлеты.Через 4 минуты переворачиваем котлету № 1, убираем со сковородки котлету № 2 и кладём на её место котлету № 3.Через 4 минуты переворачиваем котлету № 3, убираем котлету № 1 (обжарена с 2 сторон) и кладём на её место котлету № 2 второй стороной.Через 4 минуты котлеты № 2 и 3 поджарены.Итого 12 минут.
И если котлет больше, чем вместимость сковородки, мы всегда можем реорганизовать порядок обжарки так, чтобы минимизировать обще время обжарки. Считать время надо не по количеству котлет, а по количеству обжариваемых сторон: if (numberOfCutlets
 
Конвеером обжаривай. То есть на сковороде должно всегда находится по 2 котлеты.
 
В вашем коде есть ошибка. Вы считаете, что время обжарки одной партии котлет равно m * 2, но это не так. Время обжарки одной партии котлет равно m * 4, потому что каждую котлету нужно обжарить с двух сторон.

В примере, который вы привели, на обжарку одной партии котлет уходит 8 минут (4 минуты с одной стороны и 4 минуты с другой стороны). Поскольку в сковородку помещается только 2 котлеты, то для обжарки 3 котлет потребуется 2 партии. На обжарку 2 партий котлет потребуется 2 * 8 = 16 минут.

В вашем коде вы считаете, что для обжарки 3 котлет потребуется 3 партии, на каждую из которых будет уходить 8 минут. Это приводит к неправильному ответу 24.

Чтобы исправить ошибку, нужно изменить код так, чтобы время обжарки одной партии котлет рассчитывалось правильно. Вот исправленный код: import java.util.Scanner;

class MyProgram {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int capacity = scan.nextInt(), fryingTimePerSide = scan.nextInt(), numberOfCutlets = scan.nextInt();
int numberOfParties;
if (numberOfCutlets % capacity == 0) {
numberOfParties = numberOfCutlets / capacity;
} else {
numberOfParties = numberOfCutlets / capacity + 1;
}
System.out.println(numberOfParties * (fryingTimePerSide * 4));
}
} Этот код исправляет ошибку и выводит правильный ответ 12.

Вот объяснение, как работает этот код:

Сначала код определяет, сколько котлет поместится в сковородку за один раз.
Затем код определяет, сколько партий нужно будет приготовить, чтобы обжарить все котлеты.
Наконец, код вычисляет общее время обжарки, умножив количество партий на время обжарки одной партии.
В этом коде время обжарки одной партии котлет рассчитывается как m * 4, где m - время обжарки одной стороны котлеты. Это значение вводится пользователем в качестве входного параметра.

Я надеюсь, что это объяснение поможет вам понять, как работает код.
 
Ну есть 3 котлеты 1, 2, 3.
Сначала ложим 1 и 2, жарим 4 минуты
Затем 1 переворачиваем и ложим к ней 3 котлету жарим 4 минуты
Затем 2 и 3 ложим не обжаренными сторонами на сковороду это еще 4 минуты
Итого 4+4+4=12 минут на 3 котлеты
 
Назад
Сверху