В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
polinakoshara03
polinakoshara03
22.12.2022 09:19 •  Информатика

Вконструкторском бюро проектируют планетоход для исследования поверхности планеты марс. исследования должны проводиться на прямоугольной области планеты без препятствий внутри неё. эта область разделена на единичные квадраты и имеет размеры m×n, где m – длина прямоугольника, а n – его ширина. планируется, что планетоход должен работать по следующей программе. вначале он садится в северо-западном углу заданной области в направлении на восток. после этого планетоход начинает обход и исследование выбранной области, двигаясь по спирали по часовой стрелке. при этом спираль постепенно «закручивается» вовнутрь, захватывая постепенно все клетки прямоугольника. исследование заканчивается, когда пройдены все клетки. требуется написать программу, которая для заданных m и n определяет количество поворотов, которые должен выполнить планетоход в процессе исследования области. описание входных данных входные данные вводятся из файла input.txt. в единственной строке этого файла через пробел записаны два целых числа m и n, размеры исследуемого прямоугольного участка. описание выходных данных. выходные данные выводятся в файл output.txt. в единственной строке этого файла необходимо вывести одно целое число – количество поворотов, которое выполнит планетоход при исследовании заданной области на поверхности марса. пример входных и выходных данных входные данные: 3 4 выходные данные: 5

Показать ответ
Ответ:
ден7гв
ден7гв
10.07.2020 06:28
Рассматривая различные прямоугольники и подсчитывая в них число поворотов P, можно прийти к следующему алгоритму. Для любого натурального k получаем:
P=\begin {cases} 0, \ min(M,N)=1 
\\4k-2, \ min(M,N)=2k, \, M=N, \, k \in \mathbb N \\ 4k-1, \ 
min(M,N)=2k, \, M \neq N, \, k \in \mathbb N \\ 4k, \ min(M,N)=2k+1, \,
 M=N, \, k \in \mathbb N \\ 4k+1, \ min(M,N)=2k+1, \, M \neq N, \, k 
\in \mathbb N \\ \end {cases}

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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота