Разбор
Анализ алгоритма
Запишем два условия. В первом проверим, есть ли среди трех чисел четное число. Во втором – есть ли среди трех чисел нечетное число. Если оба условия истины, то выводим "YES".
Реализация алгоритма
Читаем входные данные. Установим переменной flag
значение 0. Если среди трех входных чисел имеется четное, то увеличим flag
на 1. Далее, если среди трех чисел имеется нечетное, то также увеличим flag
на 1.
Если одно из входных чисел будет нечетным отрицательным, то остаток от его деления на 2 равен -1, а не 1. Поэтому проще перейти к решению задачи на неотрицательных целых числах, взяв входные значения по модулю.
scanf("%d %d %d",&a,&b,&c); flag = 0; if (a < 0) a = -a; if (b < 0) b = -b; if (c < 0) c = -c; if ((a % 2 == 0) || (b % 2 == 0) || (c % 2 == 0)) flag++; if ((a % 2 == 1) || (b % 2 == 1) || (c % 2 == 1)) flag++; if (flag == 2) printf("YES\n"); else printf("NO\n");
Если оба условия истины, то переменная flag
примет значение 2. Выводим результат в зависимости от значения flag
.
Второе решение. Задачу можно решить при помощи одного составного условия.
scanf("%d %d %d",&a,&b,&c); if (a < 0) a = -a; if (b < 0) b = -b; if (c < 0) c = -c; if (((a % 2 == 0) || (b % 2 == 0) || (c % 2 == 0)) && ((a % 2 == 1) || (b % 2 == 1) || (c % 2 == 1))) printf("YES\n"); else printf("NO\n");
Java реализация
import java.util.*; public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); int a = con.nextInt(); int b = con.nextInt(); int c = con.nextInt(); int flag = 0; if (a % 2 == 0 || b % 2 == 0 || c % 2 == 0) flag++; if (a % 2 != 0 || b % 2 != 0 || c % 2 != 0) flag++; if (flag == 2) System.out.println("YES"); else System.out.println("NO"); con.close(); } }
Python реализация
a,b,c = map(int,input().split()) flag = 0 if ((a % 2 == 0) or (b % 2 == 0) or (c % 2 == 0)) : flag += 1 if ((a % 2 == 1) or (b % 2 == 1) or (c % 2 == 1)) : flag += 1 if (flag == 2) : print("YES") else : print("NO")