Вопрос задан 13.02.2025 в 19:16. Предмет Информатика. Спрашивает Карпова Виолетта.

Миша живет на n-м этаже. Когда Миша заходит в подъезд, он смотрит, на каком этаже
в этот момент находится лифт и решает, вызвать лифт или пойти по лестнице.
Сегодня лифт находится на k-м этаже. Миша заходит в подъезд на 1 этаже. Он подни-
мается на один этаж за a секунд. Лифт перемещается на один этаж за b секунд. Временем
входа в лифт и выхода из лифта, а также перемещения к лестнице и обратно можно пре-
небречь.
Мише нужно как можно быстрее попасть домой. Помогите Мише принять решение - идти ему по лестнице или ехать на лифте. (Программа Pascal ABC)

Перейти к ответам

Ответы на вопрос

Отвечает Балкашин Саша.

Давайте разберем задачу и составим алгоритм для решения с помощью программы на PascalABC.

Алгоритм решения:

  1. Входные данные:

    • nn: этаж, на который нужно попасть.
    • kk: этаж, на котором находится лифт.
    • aa: время подъема на один этаж по лестнице (в секундах).
    • bb: время подъема лифта на один этаж (в секундах).
  2. Подсчеты:

    • Время, необходимое для подъема по лестнице: Tstair=a×(n1)T_{\text{stair}} = a \times (n - 1), так как Миша начинает с 1 этажа.
    • Время, необходимое для подъема на лифте:
      • Время, чтобы лифт доехал до 1 этажа: Tto_1=b×k1T_{\text{to\_1}} = b \times |k - 1|.
      • Время, чтобы лифт доехал от 1 этажа до nn-го этажа: Tlift_to_n=b×(n1)T_{\text{lift\_to\_n}} = b \times (n - 1).
      • Полное время на лифте: Tlift=Tto_1+Tlift_to_nT_{\text{lift}} = T_{\text{to\_1}} + T_{\text{lift\_to\_n}}.
  3. Решение:

    • Сравнить TstairT_{\text{stair}} и TliftT_{\text{lift}}.
    • Если TstairTliftT_{\text{stair}} \leq T_{\text{lift}}, то выбрать лестницу, иначе — лифт.
  4. Вывод результата:

    • Выводим, что быстрее: идти по лестнице или ехать на лифте.

Реализация программы на PascalABC:

pascal
program MishaLiftOrStairs;

var n, k: integer; // Этаж Миши и этаж лифта a, b: integer; // Время на 1 этаж по лестнице и на 1 этаж лифтом T_stair, T_lift, T_to_1, T_lift_to_n: integer;

begin // Ввод данных writeln('Введите этаж, на который нужно попасть (n):'); readln(n); writeln('Введите этаж, на котором находится лифт (k):'); readln(k); writeln('Введите время подъема на 1 этаж по лестнице (a):'); readln(a); writeln('Введите время подъема на 1 этаж лифтом (b):'); readln(b);

// Рассчитать время на лестнице T_stair := a * (n - 1);

// Рассчитать время на лифте T_to_1 := b * abs(k - 1); // Время, чтобы лифт приехал на 1 этаж T_lift_to_n := b * (n - 1); // Время от 1 до n этажа T_lift := T_to_1 + T_lift_to_n;

// Сравнить времена и вывести результат if T_stair <= T_lift then writeln('Иди по лестнице, это быстрее.') else writeln('Езжай на лифте, это быстрее.'); end.

Пояснение работы программы:

  1. Ввод данных:

    • Пользователь вводит этаж nn, текущий этаж лифта kk, и времена aa, bb.
  2. Расчет времени:

    • Сначала программа рассчитывает TstairT_{\text{stair}} — время на лестнице.
    • Затем TliftT_{\text{lift}}, суммируя время, чтобы лифт доехал до первого этажа, и время до nn-го этажа.
  3. Сравнение:

    • Выбирается минимальное из двух времен, и выводится, что быстрее.

Пример работы:

Входные данные:

  • n=5n = 5 (этаж Миши).
  • k=3k = 3 (этаж лифта).
  • a=10a = 10 (время на один этаж по лестнице).
  • b=5b = 5 (время на один этаж лифтом).

Рассчеты:

  • Tstair=10×(51)=40T_{\text{stair}} = 10 \times (5 - 1) = 40.
  • Tto_1=5×31=10T_{\text{to\_1}} = 5 \times |3 - 1| = 10.
  • Tlift_to_n=5×(51)=20T_{\text{lift\_to\_n}} = 5 \times (5 - 1) = 20.
  • Tlift=10+20=30T_{\text{lift}} = 10 + 20 = 30.

Вывод:

  • Tlift=30T_{\text{lift}} = 30 < Tstair=40T_{\text{stair}} = 40.
  • Вывод: "Езжай на лифте, это быстрее."

Теперь вы можете использовать эту программу для вычислений при любых входных данных!

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос