Предмет: Другие предметы,
автор: drekhovskiyowy6x3
Решить при помощи pytrhon, pascal или c++. Даю 91 балл!!!!
Ограничение по времени, сек 2
Ограничение по памяти, мегабайт 64
В конструкторском бюро проектируют планетоход для исследования поверхности планеты Марс. Исследования должны проводиться на прямоугольной области планеты без препятствий внутри неё. Эта область разделена на единичные квадраты и имеет размеры MN, где M – высота прямоугольника, а N – его ширина.
Планируется, что планетоход должен работать по следующей программе. Вначале он садится в северо-западном углу заданной области в направлении на восток. После этого планетоход начинает обход и исследование выбранной области, двигаясь по спирали по часовой стрелке. При этом спираль постепенно «закручивается» вовнутрь, захватывая постепенно все клетки прямоугольника. Исследование заканчивается, когда пройдены все клетки (после очередного поворота планетохода).
Требуется написать программу, которая для заданных M и N (1MN32767) определяет количество поворотов, которые должен выполнить планетоход в процессе исследования области.
Входные данные
В единственной входной строке через пробел записаны два целых числа M и N (1MN32767), размеры исследуемого прямоугольного участка.
Выходные данные
Программа должна вывести одно целое число – количество поворотов, которое выполнит планетоход при исследовании заданной области на поверхности Марса.
Примеры
входные данные
3 4
выходные данные
5
входные данные
5 3
выходные данные
6
Ответы
Автор ответа:
1
var
M, N, k, mn, P: integer;
f: Text;
begin
Assign(f, 'input.txt');
Reset(f);
Readln(f, M, N);
Close(f);
if M < N then mn := M else mn := N;
if mn = 1 then P := 0
else begin
k := mn div 2;
if mn mod 2 = 0 then
if M = N then P := 4 * k - 2
else P := 4 * k - 1
else
if M = N then P := 4 * k
else P := 4 * k + 1
end;
Assign(f, 'output.txt');
Rewrite(f);
Writeln(f, P);
Close(f)
end. Так??
M, N, k, mn, P: integer;
f: Text;
begin
Assign(f, 'input.txt');
Reset(f);
Readln(f, M, N);
Close(f);
if M < N then mn := M else mn := N;
if mn = 1 then P := 0
else begin
k := mn div 2;
if mn mod 2 = 0 then
if M = N then P := 4 * k - 2
else P := 4 * k - 1
else
if M = N then P := 4 * k
else P := 4 * k + 1
end;
Assign(f, 'output.txt');
Rewrite(f);
Writeln(f, P);
Close(f)
end. Так??
drekhovskiyowy6x3:
nice!
Похожие вопросы
Предмет: Физика,
автор: anao14586
Предмет: Русский язык,
автор: jdjkfkf
Предмет: География,
автор: laimower002
Предмет: Математика,
автор: zebra30
Предмет: Математика,
автор: francesca123