Возьмем для начало самое большое шестизначное число, это 999999 Что бы условие выполнялось и при этом число-результат было самым большим будем смотреть каждый элемент условия: Есть хотя бы одна тройка и нет восьмерок - 999993 Есть хотя бы одна тройка и не больше двух девяток - 99883 Есть ровно две единицы и нет восьмерок - 999911 Есть ровно две единицы и не больше двух 9 - 998811
999993 - и есть самое большое число выполняющее условие (Есть хотя бы одна тройка ИЛИ Есть ровно две единицы) И (Нет восьмерок ИЛИ Не больше двух девяток)
Задача сложна тем, что остаток от деления может быть может быть любым, от 1 до B-1. Поэтому она свелась к тому, чтобы ЛЮБОЕ число представить как 1. А нуль оставить нулём. Простейшим решением этой подзадачи явилось следующее: ( (Х + 2) // (Х + 1) ) % 2. В таком случае при Х = 0 левая часть выражения становится равна 2 и результат вычислений - 0. А при любом другом числе левая часть равна 1 и результат вычислений тоже будет 1. Теперь осталось выразить Х через А и В.
(((А % В) + 2) // ((А % В) + 1)) % 2.
Однако, следует помнить, что % - это операция деления, и при В = 0 интерпретатор или компилятор выдаст ошибку.
Для варианта с YES можно было бы использовать print('YES' * 1 - (А % В)).
Что бы условие выполнялось и при этом число-результат было самым большим будем смотреть каждый элемент условия:
Есть хотя бы одна тройка и нет восьмерок - 999993
Есть хотя бы одна тройка и не больше двух девяток - 99883
Есть ровно две единицы и нет восьмерок - 999911
Есть ровно две единицы и не больше двух 9 - 998811
999993 - и есть самое большое число выполняющее условие (Есть хотя бы одна тройка ИЛИ Есть ровно две единицы) И (Нет восьмерок ИЛИ Не больше двух девяток)
Задача сложна тем, что остаток от деления может быть может быть любым, от 1 до B-1. Поэтому она свелась к тому, чтобы ЛЮБОЕ число представить как 1. А нуль оставить нулём. Простейшим решением этой подзадачи явилось следующее: ( (Х + 2) // (Х + 1) ) % 2. В таком случае при Х = 0 левая часть выражения становится равна 2 и результат вычислений - 0. А при любом другом числе левая часть равна 1 и результат вычислений тоже будет 1. Теперь осталось выразить Х через А и В.
(((А % В) + 2) // ((А % В) + 1)) % 2.
Однако, следует помнить, что % - это операция деления, и при В = 0 интерпретатор или компилятор выдаст ошибку.
Для варианта с YES можно было бы использовать print('YES' * 1 - (А % В)).