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


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.

Так как в условии предлагается обойтись без списков и встроенных функций, удобно сделать это в два шага:

  1. Сначала найти большее из a и b.
  2. Затем сравнить найденное число с c.

В результате получим наибольшее из всех трёх.

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

  • Максимум из трёх чисел можно искать постепенно.
  • Если уже известен максимум среди a и b, то остаётся только проверить, не больше ли c.
  • Даже если числа отрицательные, способ работает точно так же.
  • Если некоторые числа равны, это не создаёт проблем: максимум всё равно будет найден.

Пример:

  • для 1 2 3:
    • максимум из 1 и 2 — это 2;
    • сравниваем 2 и 3, получаем 3.

Ещё пример:

  • для -5 -2 -9:
    • максимум из -5 и -2 — это -2;
    • сравниваем -2 и -9, максимум остаётся -2.

3. Алгоритм

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

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

После первого сравнения в mx хранится максимум из чисел a и b.

Дальше остаётся только проверить число c:

  • если c больше, чем текущее значение mx, значит именно 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;
    if (a > b) {
        mx = a;
    } else {
        mx = b;
    }

    if (c > mx) {
        mx = c;
    }

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

7. Код на Python 3

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

if a > b:
    mx = a
else:
    mx = b

if c > mx:
    mx = c

print(mx)

Комментарии

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