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


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.

Самый простой способ — хранить текущий максимум в отдельной переменной mx:

  • сначала считаем, что максимум равен a;
  • затем сравниваем mx с b;
  • потом сравниваем mx с c;
  • после этого в mx будет лежать наибольшее из трёх чисел.

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

  • Требуется вывести не номер арбуза, а именно его массу.
  • Если несколько арбузов имеют одинаковую максимальную массу, ничего специально делать не нужно: максимум всё равно будет равен этому значению.
  • Числа могут быть отрицательными, поэтому нельзя, например, начинать с 0. Надёжнее всего взять начальный максимум равным a.

Пример:

  • для -5 -2 -10 ответ должен быть -2;
  • если бы мы начинали с 0, получили бы неверный результат.

3. Алгоритм

  1. Считать a, b, c.
  2. Присвоить mx = a.
  3. Если b > mx, то обновить mx = b.
  4. Если c > mx, то обновить mx = c.
  5. Вывести mx.

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

После шага mx = a переменная mx хранит максимум среди одного числа: a.

После проверки b:

  • если b больше текущего mx, то новый максимум — это b;
  • иначе максимум остаётся прежним.

Значит, после этого шага mx хранит максимум среди a и b.

После проверки c по той же логике:

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

Следовательно, в конце mx равен максимальному значению среди 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 mx = a;
    if (b > mx) {
        mx = b;
    }
    if (c > mx) {
        mx = c;
    }

    cout << mx << '\n';
    return 0;
}

7. Код на Python 3

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

mx = a
if b > mx:
    mx = b
if c > mx:
    mx = c

print(mx)

Комментарии

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