Редакция для Знак числа
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. Идея
Нужно определить знак числа n.
Есть всего три варианта:
- если
n > 0, ответ1; - если
n < 0, ответ-1; - если
n == 0, ответ0.
Задача решается обычным ветвлением if / elif / else.
2. Наблюдения
Число может быть:
- положительным;
- отрицательным;
- равным нулю.
Эти случаи не пересекаются и полностью покрывают все возможные значения n.
Поэтому достаточно последовательно проверить:
- больше ли число нуля;
- меньше ли число нуля;
- иначе оно равно нулю.
3. Алгоритм
- Считать целое число
n. - Если
n > 0, вывести1. - Иначе если
n < 0, вывести-1. - Иначе вывести
0.
4. Почему это работает
Рассмотрим все возможные значения n.
- Если
nбольше нуля, по условию нужно вывести1. Алгоритм именно это и делает. - Если
nменьше нуля, по условию нужно вывести-1. Алгоритм выводит-1во второй ветке. - Если
nне больше нуля и не меньше нуля, то остаётся единственный вариант:n = 0. Тогда алгоритм выводит0.
Значит, для любого допустимого входного числа алгоритм выдаёт правильный ответ.
5. Сложность
Алгоритм выполняет несколько сравнений, поэтому:
- время работы:
O(1); - память:
O(1).
6. Код на C++17
#include <iostream>
using namespace std;
int main() {
long long n;
cin >> n;
if (n > 0) {
cout << 1;
} else if (n < 0) {
cout << -1;
} else {
cout << 0;
}
return 0;
}
7. Код на Python 3
n = int(input())
if n > 0:
print(1)
elif n < 0:
print(-1)
else:
print(0)
Комментарии