Задача
Для заданного целого числа $n$ вывести YES, если выполняется ровно одно из следующих условий и NO в противном случае.
- число $n$ четное.
- число $n$ отрицательное и кратное трем.
Входные данные
Одно целое число $n$.
Выходные данные
Вывести YES или NO в зависимости от выполнения условий.
Тесты
ВВОД | ВЫВОД |
22 | YES |
7 | NO |
-30 | NO |
-9 | YES |
0 | YES |
Код (как делать можно, но не нужно)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { int n; cin >> n; if((n % 2 == 0 and (n >= 0 or n % 3 != 0)) or (n % 3 == 0 and n < 0 and n % 2 != 0)){ cout << "YES"; } else{ cout << "NO"; } return 0; } |
Код (как делать можно и нужно)
1 2 3 4 5 6 7 |
#include <iostream> using namespace std; int main() { int n; cin >> n; cout << ((n%2 == 0) == (n%3 == 0 and n<0)? "NO": "YES"); } |
Решение
Если оба условия выполняются или оба не выполняются, то нужно вывести «NO», а иначе — «YES».
- В первом случае проверяем четность числа $n$.
- Во втором случае проверяем кратность трем и является ли $n$ отрицательным.
- В обеих случаях исключаем варианты, когда оба условия могли бы выполнятся, то есть исключаем отрицательные числа и кратность трем для первого, и четность числа для второго случая.
Используйте LaTex для обозначения переменных. Если у вас нет длинных формул, это не значит, что вам не нужен LaTex 🙂
Спасибо,исправил. 🙂
Если оба условия true или оба false, то нужно вывести «NO», иначе — «YES». записать это в виде кода можно так:
Тут все было бы понятно. У вас несколько другое условие — (n % 2 == 0 and n >= 0) or (n % 3 == 0 and n < 0 and n % 2 != 0). Нужно подробно объяснить как вы его получили из исходного.
По оформлению — в конце предложений ставится точка, а не точка с запятой.
И еще. Ваша фраза «Для решения данной задачи необходимо выполнение РОВНО одного из условий» поставила меня в тупик. Какое именно условие Вам пришлось выполнить, чтобы решить эту задачу? Я чувствую, здесь есть какой-то глубокий смысл, как парадоксах из «Алисы в стране чудес». Но давайте пока этот текст уберем. Хорошо?
Спасибо! Все исправил.
Хорошо, принято.
Хотя, я никогда не понимал всех этих «наше число». Всегда казалось, что если написать $n$, то понятнее чем «наше». Да и можем ли мы реально доказать, что оно наше? Вдруг оно чужое? Или «всехнее»?
Есть еще мелкие недостатки. Не настолько, чтобы не засчитать, но и промолчать нельзя. Например, в условном операторе у вас печать в фигурных (операторных) скобках. Поскольку оператор один их можно не ставить. Но можно и ставить.
А после else печать уже без фигурных скобок. Опять оператор один — можно скобки не ставить. А можно ставить. Вот и непонятно ставить можно, не ставить тоже можно. Авторский стиль. А вы то ставите, то не ставите. Можно и так, но тогда нужна причина, обоснование. Иначе стилистический диссонанс получается 🙂
Еще одна странность. Если условие выполнено, то вы печатаете. Если не выполнено, то тоже печатаете. Значит вы в любом случае печатаете? Тогда зачем условный оператор? Логичнее тернарную операцию использовать, чтобы всегда печатать, но разные вещи.
Ну, ладно. Исправите — хорошо, не исправите — так у меня в комментарии все написано 🙂
Игорь Евгеньевич, Спасибо за подробный комментарий.
Исправил «стилистические диссонансы» и добавил ваш код в запись для будущих поколений. 🙂