Олимпиадная задача "Котлеты" - Free Pascal
Формулировка задачи:
Задача H. Котлеты
(Время: 1 сек. Память: 16 Мб)
На сковородке одновременно можно положить k котлет. Каждую котлету нужно с каждой стороны обжаривать m минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон n котлет?
Входные данные
В единственной строке входного файла INPUT.TXT записано три натуральных числа: k, m, n, не превышающих 30000.
Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести единственное число – минимальное время, за которое можно поджарить все котлеты.
Вот решение, но оно не подходит под все тесты..
Все из-за того, что можно жарить котлеты таким образом:
1я(1я сторона), 2я(1я сторона)...2я(2я сторона), 3я(2я сторона)...1я (2ясторона), 3я (2я сторона)
Есть идеи насчет алгоритма такой жарки?
var k,m,n:longint; F1:text; summ:longint; begin Assign(F1,'input.txt'); Reset(F1); Readln(F1,k,m,n); close(F1); summ:=n div k; if( n mod k <> 0) then inc(summ); summ:=2*m*summ; Assign(F1,'output.txt'); Rewrite(F1); writeln(F1, summ); close(F1); end.
Решение задачи: «Олимпиадная задача "Котлеты"»
textual
Листинг программы
var k,m,n,v:dword; begin read(k,m,n); v:=n div k*2*m; if n mod k>0 then if k div 2<n mod k then v:=v+m*2 else v:=v+m; if n<=k then v:=2*m; write(v) end.
Объяснение кода листинга программы
- В коде используется язык программирования Free Pascal.
- Код решает олимпиадную задачу
Котлеты
. - В коде используются следующие переменные: k, m, n, v (k, m, n - целочисленные значения, v - результат вычислений).
- В первой строке кода происходит чтение трех целочисленных значений k, m, n из стандартного ввода.
- Во второй строке кода происходит вычисление значения переменной v по формуле: v = n div k 2 m (где div - оператор целочисленного деления).
- В третьей и четвертой строках кода происходит проверка значения переменной n mod k (остаток от деления n на k) и, если остаток больше 0, то выполняется следующая проверка: если k div 2 меньше n mod k, то значение переменной v увеличивается на 2 * m, иначе значение переменной v увеличивается на m.
- Если значение переменной n меньше или равно k, то значение переменной v устанавливается равным 2 * m.
- В последней строке кода значение переменной v выводится на стандартный вывод.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д