Редакция для Минимум трёх чисел


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Автор: montes332

1. Идея

Нужно найти минимальное из трёх целых чисел a, b, c.

Самый простой способ — считать, что текущий минимум равен a, а потом по очереди проверить, не меньше ли него b и c.

Если какое-то число меньше текущего минимума, обновим ответ.

2. Наблюдения

  • Минимум среди трёх чисел можно искать постепенно.
  • Сначала минимум среди одного числа a — это само число a.
  • Затем сравниваем b с текущим минимумом:
    • если b меньше, значит теперь минимум — b;
    • иначе минимум не меняется.
  • После этого делаем то же самое для c.

Такой подход полностью соответствует условию: списки не нужны, достаточно условных операторов.

3. Алгоритм

  1. Считать три числа a, b, c.
  2. Завести переменную ans и присвоить ей a.
  3. Если b < ans, то присвоить ans = b.
  4. Если c < ans, то присвоить ans = c.
  5. Вывести ans.

4. Почему это работает

Разберём по шагам.

  • После присваивания ans = a переменная ans хранит минимум среди рассмотренных чисел, то есть пока среди одного числа a.
  • После проверки if b < ans:

    • если b меньше, мы записываем его в ans;
    • если нет, ans остаётся равным a.

    Значит, после этой проверки ans хранит минимум среди a и b.

  • После проверки if c < ans:

    • если c меньше текущего минимума, обновляем ans;
    • иначе оставляем как есть.

    Значит, в конце ans хранит минимум среди a, b, c.

Именно это и требуется вывести.

5. Сложность

Алгоритм выполняет всего несколько сравнений, поэтому:

  • время работы: O(1)
  • память: O(1)

6. Код на C++17

#include <iostream>
using namespace std;

int main() {
    long long a, b, c;
    cin >> a >> b >> c;

    long long ans = a;
    if (b < ans) {
        ans = b;
    }
    if (c < ans) {
        ans = c;
    }

    cout << ans;
    return 0;
}

7. Код на Python 3

a, b, c = map(int, input().split())

ans = a
if b < ans:
    ans = b
if c < ans:
    ans = c

print(ans)

Комментарии

Еще нет ни одного комментария.