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

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

Показать ответ
Ответ:
vlada2207
vlada2207
10.07.2020 06:31
Рассматривая различные прямоугольники и подсчитывая в них число поворотов 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-бота