Редакция для Максимум трёх чисел
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.
Submitting an official solution before solving the problem yourself is a bannable offence.
Автор:
1. Идея
Нужно найти максимум среди трёх чисел a, b и c.
Так как в условии предлагается обойтись без списков и встроенных функций, удобно сделать это в два шага:
- Сначала найти большее из
aиb. - Затем сравнить найденное число с
c.
В результате получим наибольшее из всех трёх.
2. Наблюдения
- Максимум из трёх чисел можно искать постепенно.
- Если уже известен максимум среди
aиb, то остаётся только проверить, не больше лиc. - Даже если числа отрицательные, способ работает точно так же.
- Если некоторые числа равны, это не создаёт проблем: максимум всё равно будет найден.
Пример:
- для
1 2 3:- максимум из
1и2— это2; - сравниваем
2и3, получаем3.
- максимум из
Ещё пример:
- для
-5 -2 -9:- максимум из
-5и-2— это-2; - сравниваем
-2и-9, максимум остаётся-2.
- максимум из
3. Алгоритм
- Считать три числа
a,b,c. - Завести переменную
mx. - Если
a > b, то присвоитьmx = a, иначеmx = b. - Если
c > mx, то присвоитьmx = c. - Вывести
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)
Комментарии