Редакция для Максимум из трёх чисел
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.
Самый простой способ — хранить текущий максимум в отдельной переменной mx:
- сначала считаем, что максимум равен
a; - затем сравниваем
mxсb; - потом сравниваем
mxсc; - после этого в
mxбудет лежать наибольшее из трёх чисел.
2. Наблюдения
- Требуется вывести не номер арбуза, а именно его массу.
- Если несколько арбузов имеют одинаковую максимальную массу, ничего специально делать не нужно: максимум всё равно будет равен этому значению.
- Числа могут быть отрицательными, поэтому нельзя, например, начинать с
0. Надёжнее всего взять начальный максимум равнымa.
Пример:
- для
-5 -2 -10ответ должен быть-2; - если бы мы начинали с
0, получили бы неверный результат.
3. Алгоритм
- Считать
a,b,c. - Присвоить
mx = a. - Если
b > mx, то обновитьmx = b. - Если
c > mx, то обновитьmx = c. - Вывести
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)
Комментарии