Предмет: Информатика,
автор: dgkjh
Нужно без циклов,только одним-единственным выражением с помощью операций {+, -, *, //, % } вывести выражение, которое напечатает 'NO', если A не делится на B.
Эта задача кусок от другой.выражение, которое печатает 'YES' в случае если A кратно B я вывела. идея в том,чтобы требуемое выражение для случая "не делится" давала 1 если A НЕ кратно B, и 0 если кратно. прикрепляю своё решение для 'YES'
A = int(input())
B = int(input())
print( 'YES' * (((A // B) - (A % B)) // (A // B)) )
# print('NO'*(((A + A % B) // B) // (A // B))) ---- не работает
решение подойдёт на любом языке в любом виде.главное, чтобы без читерских функций и методов
Ответы
Автор ответа:
0
Ловите решение.
Задача сложна тем, что остаток от деления может быть может быть любым, от 1 до B-1. Поэтому она свелась к тому, чтобы ЛЮБОЕ число представить как 1. А нуль оставить нулём. Простейшим решением этой подзадачи явилось следующее: ( (Х + 2) // (Х + 1) ) % 2. В таком случае при Х = 0 левая часть выражения становится равна 2 и результат вычислений - 0. А при любом другом числе левая часть равна 1 и результат вычислений тоже будет 1. Теперь осталось выразить Х через А и В.
(((А % В) + 2) // ((А % В) + 1)) % 2.
Однако, следует помнить, что % - это операция деления, и при В = 0 интерпретатор или компилятор выдаст ошибку.
Для варианта с YES можно было бы использовать print('YES' * 1 - (А % В)).
Задача сложна тем, что остаток от деления может быть может быть любым, от 1 до B-1. Поэтому она свелась к тому, чтобы ЛЮБОЕ число представить как 1. А нуль оставить нулём. Простейшим решением этой подзадачи явилось следующее: ( (Х + 2) // (Х + 1) ) % 2. В таком случае при Х = 0 левая часть выражения становится равна 2 и результат вычислений - 0. А при любом другом числе левая часть равна 1 и результат вычислений тоже будет 1. Теперь осталось выразить Х через А и В.
(((А % В) + 2) // ((А % В) + 1)) % 2.
Однако, следует помнить, что % - это операция деления, и при В = 0 интерпретатор или компилятор выдаст ошибку.
Для варианта с YES можно было бы использовать print('YES' * 1 - (А % В)).
Автор ответа:
0
"Однако, следует помнить, что % - это операция деления, и при В = 0 интерпретатор или компилятор выдаст ошибку". Странные Вы вещи пишете. Компилятор не выдает ошибки при корректном коде программы, он не следит за исполнением; сообщение об ошибке может возникнуть при выполнении откомпилированной программы.
Автор ответа:
0
Далее, Питон - интерпретируемый язык. Компиляция у него возможна чисто условная, в байткод, который потом все равно интерпретируется.
Похожие вопросы
Предмет: Биология,
автор: aleksagria25colovean
Предмет: Алгебра,
автор: Viktor1247
Предмет: Оʻzbek tili,
автор: milashkamil2605
Предмет: История,
автор: Ibragim91
Предмет: Литература,
автор: AlinaKot123