Решите в Pascal ABCНа вход программке подаются 4 целых числа, по

Решите в Pascal ABC
На вход программе подаются 4 целых числа, по модулю не превосходящие 10^6: m,n,k,l. Если остаток от деления m на n равен k либо l, то выведите 1, в неприятном случае - любое другое число.
Условный оператор использовать нельзя!

Задать свой вопрос
Nina
В каком классе обучайтесь?
Миннихонова Елена
Можно использовать такую формулу: ((m mod n) xor k) and ((m mod n) xor l) + 1
Николай Коненко
Проблема в том, что ((m mod n) xor k) и ((m mod n) xor l) могут не иметь общих битов в своей двоичной записи
Михаил Войтенков
Хмм, можно кое-что иное...
1 ответ

var m, n, k, l : longint;

begin

readln(m, n, k, l);

writeln(((m mod n) xor k) * ((m mod n) xor l) + 1);

end.


Работает программка последующим образом:

Если провести операцию XOR с двумя одинаковыми числами, то ответом будет 0.

Если остаток от дробления равен k либо l, то одна из скобок одинакова 0, что при умножении даст 0. Для выполнения условия задачки добавим 1.

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт