profile
Размещено 5 лет назад по предмету Информатика от Аккаунт удален

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

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    Рассматривая различные прямоугольники и подсчитывая в них число поворотов 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.

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.