М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sergooopoop
sergooopoop
16.08.2022 14:06 •  Информатика

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

👇
Ответ:
swietajakubiak
swietajakubiak
16.08.2022
Рассматривая различные прямоугольники и подсчитывая в них число поворотов 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.
4,8(28 оценок)
Открыть все ответы
Ответ:
mezhsaya
mezhsaya
16.08.2022
Предположим, что первый свидетель соврал, что автобус - первый, и сказал правду, что маршрутка - вторая.
 Тогда для третьего свидетеля - утверждение про автобус - ложь (так как вторым выехала маршрутка), значит третьим выехал легковой автомобиль.
Тогда оба утверждения второго свидетеля являются ложью (у него легковой автомобиль - четвёртый на перекрестке, грузовик - второй, в у нас получилось легковой автомобиль - третий, в маршрутка - вторая).
Получили противоречие. Значит, первый свидетель сказал правду, что автобус первый и соврал про маршрутку.
Тогда из утверждений третьего свидетеля следует, что легковой автомобиль - третий.
Из второго свидетеля следует, что грузовик - второй.
Тогда маршрутке остаётся четвёртое место.
ответ: АГЛМ
4,6(41 оценок)
Ответ:
23Олеся1
23Олеся1
16.08.2022
Procedure swap(var a, b: real);
var t: real;
begin
     t := a;
     a := b;
     b := t;
end;

var a, b, c: real;
begin
     readln(a, b, c);
     if (a > b) then swap(a, b);
     if (b > c) then swap(b, c);
     if (a > b) then swap(a, b);
     writeln(a, ' ', b, ' ', c);
end.

Без процедур:

var a, b, c, t: integer;
begin
     readln(a, b, c);
     if (a > b) then
     begin
          t := a;
          a := b;
          b := t;
     end;
     if (b > c) then
     begin
          t := b;
          b := c;
          c := t;
     end;
     if (a > b) then
     begin
          t := a;
          a := b;
          b := t;
     end;
     writeln(a, ' ', b, ' ', c);
end.
4,6(67 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ