e-olymp 8891. Ровно одно условие из двух

Задача

Для заданного целого числа $n$ вывести YES, если выполняется ровно одно из следующих условий и NO в противном случае.

  • число $n$ четное.
  • число $n$ отрицательное и кратное трем.

Входные данные

Одно целое число $n$.

Выходные данные

Вывести YES или NO в зависимости от выполнения условий.

Тесты

 ВВОД ВЫВОД
 22  YES
 7  NO
 -30  NO
 -9  YES
 0  YES

Код (как делать можно, но не нужно)

Код (как делать можно и нужно)

Решение

Если оба условия выполняются или оба не выполняются, то нужно вывести «NO», а иначе  — «YES».

  • В первом случае проверяем четность числа $n$.
  • Во втором случае проверяем кратность трем и является ли $n$ отрицательным.
  • В обеих случаях исключаем варианты, когда оба условия могли бы выполнятся, то есть исключаем отрицательные числа и кратность трем для первого, и четность числа для второго случая.

Ссылки
e-olymp
ideone

6 thoughts on “e-olymp 8891. Ровно одно условие из двух

  1. Если оба условия true или оба false, то нужно вывести «NO», иначе — «YES». записать это в виде кода можно так:

    Тут все было бы понятно. У вас несколько другое условие — (n % 2 == 0 and n >= 0) or (n % 3 == 0 and n < 0 and n % 2 != 0). Нужно подробно объяснить как вы его получили из исходного.
    По оформлению — в конце предложений ставится точка, а не точка с запятой.
    И еще. Ваша фраза «Для решения данной задачи необходимо выполнение РОВНО одного из условий» поставила меня в тупик. Какое именно условие Вам пришлось выполнить, чтобы решить эту задачу? Я чувствую, здесь есть какой-то глубокий смысл, как парадоксах из «Алисы в стране чудес». Но давайте пока этот текст уберем. Хорошо?

  2. Хорошо, принято.
    Хотя, я никогда не понимал всех этих «наше число». Всегда казалось, что если написать $n$, то понятнее чем «наше». Да и можем ли мы реально доказать, что оно наше? Вдруг оно чужое? Или «всехнее»?
    Есть еще мелкие недостатки. Не настолько, чтобы не засчитать, но и промолчать нельзя. Например, в условном операторе у вас печать в фигурных (операторных) скобках. Поскольку оператор один их можно не ставить. Но можно и ставить.
    А после else печать уже без фигурных скобок. Опять оператор один — можно скобки не ставить. А можно ставить. Вот и непонятно ставить можно, не ставить тоже можно. Авторский стиль. А вы то ставите, то не ставите. Можно и так, но тогда нужна причина, обоснование. Иначе стилистический диссонанс получается 🙂
    Еще одна странность. Если условие выполнено, то вы печатаете. Если не выполнено, то тоже печатаете. Значит вы в любом случае печатаете? Тогда зачем условный оператор? Логичнее тернарную операцию использовать, чтобы всегда печатать, но разные вещи.
    Ну, ладно. Исправите — хорошо, не исправите — так у меня в комментарии все написано 🙂

    • Игорь Евгеньевич, Спасибо за подробный комментарий.
      Исправил «стилистические диссонансы» и добавил ваш код в запись для будущих поколений. 🙂

Добавить комментарий