Проверочная работа «Представление чисел в компьютере»: Вариант 3 1. Представьте десятичное число в беззнаковом 8- разрядном формате: 57
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 257
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +72 и -72
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 2547*10-5; 0,002458*103; 0,01247*10-2
6. Запишите следующие числа в экспоненциальной форме: 3654; 0,001478; 0,02345
Что бы условие выполнялось и при этом число-результат было самым большим будем смотреть каждый элемент условия:
Есть хотя бы одна тройка и нет восьмерок - 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 - (А % В)).