В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
unicorn337228
unicorn337228
09.01.2022 09:36 •  Информатика

Нужно без циклов,только одним-единственным выражением с операций {+, -, *, //, % } вывести выражение, которое напечатает 'no', если a не делится на b. эта кусок от другой.выражение, которое печатает 'yes' в случае если a кратно b я вывела. идея в том,чтобы требуемое выражение для случая "не делится" давала 1 если a не кратно b, и 0 если кратно. прикрепляю своё решение для 'yes' a = int( b = int( print( 'yes' * // b) - (a % b)) // (a // b)) ) # print('no'* + a % b) // b) // (a // не работает решение подойдёт на любом языке в любом виде.главное, чтобы без читерских функций и методов

Показать ответ
Ответ:
dickosh97
dickosh97
06.10.2020 15:31
Ловите решение.

Задача сложна тем, что остаток от деления может быть может быть любым, от 1 до B-1. Поэтому она свелась к тому, чтобы ЛЮБОЕ число представить как 1. А нуль оставить нулём. Простейшим решением этой подзадачи явилось следующее: ( (Х + 2) // (Х + 1) ) % 2. В таком случае при Х = 0 левая часть выражения становится равна 2 и результат вычислений - 0. А при любом другом числе левая часть равна 1 и результат вычислений тоже будет 1. Теперь осталось выразить Х через А и В.

(((А % В) + 2) // ((А % В) + 1)) % 2.

Однако, следует помнить, что % - это операция деления, и при В = 0 интерпретатор или компилятор выдаст ошибку.

Для варианта с YES можно было бы использовать print('YES' * 1 - (А % В)).
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота