Редакция для Знак числа


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. Идея

Нужно определить знак числа n.

Есть всего три варианта:

  • если n > 0, ответ 1;
  • если n < 0, ответ -1;
  • если n == 0, ответ 0.

Задача решается обычным ветвлением if / elif / else.

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

Число может быть:

  • положительным;
  • отрицательным;
  • равным нулю.

Эти случаи не пересекаются и полностью покрывают все возможные значения n.

Поэтому достаточно последовательно проверить:

  1. больше ли число нуля;
  2. меньше ли число нуля;
  3. иначе оно равно нулю.

3. Алгоритм

  1. Считать целое число n.
  2. Если n > 0, вывести 1.
  3. Иначе если n < 0, вывести -1.
  4. Иначе вывести 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)

Комментарии

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