Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2022, 17:56   #1
Olivia ._.
Новичок
Джуниор
 
Регистрация: 09.07.2022
Сообщений: 2
По умолчанию <<Исключающее или>> наносит ответный удар

Здравствуйте. Помогите, пожалуйста, с алгоритмом реализации задачи. на Python
Даны два неотрицательных целых числа a и n. Требуется найти такое минимальное неотрицательное число b, что a⊕b нацело делится на n.
Здесь ⊕ обозначает операцию побитового «исключающего или» и соответствует операции «xor» в Паскале или «̂» в других языках. Для вычисления побитового «исключающего или» двух чисел x и y необходимо записать каждое из них в двоичной системе счисления, дополнив, при необходимости, ведущими нулями слева. Результат в каждой позиции равен 1 в том случае, если в точности в одном из чисел в соответствующей позиции находится 1. К примеру, для чисел x=12 и y=26 результат равен 22:

Формат ввода
В первой строке входных данных содержится число t — количество тестовых примеров (1≤t≤104). В следующих t строках содержатся описания тестовых примеров. Каждое описание состоит из двух чисел a и n, разделенных пробелом (1≤a,n≤1018).
Формат вывода
Для каждого из тестовых примеров требуется вывести единственное число — искомое b.
Пример
Ввод Вывод 0 1 6
3
10 5
3 2
98 100


Последний раз редактировалось Olivia ._.; 09.07.2022 в 22:42.
Olivia ._. вне форума Ответить с цитированием
Старый 09.07.2022, 19:05   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию

Цитата:
Сообщение от Olivia ._. Посмотреть сообщение
Для вычисления побитового «исключающего или» двух чисел x и y необходимо записать каждое из них в двоичной системе счисления, дополнив, при необходимости, ведущими нулями слева.
В данной задаче это делать нет никакой необходимости. Просто применяйте операцию к двум числам и проверяйте делимость на n.
Arigato вне форума Ответить с цитированием
Старый 09.07.2022, 20:44   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Возможно я ошибаюсь, но по моему так
Код:
b := a xor (a - a mod n); // на Pascal
macomics вне форума Ответить с цитированием
Старый 09.07.2022, 21:01   #4
Olivia ._.
Новичок
Джуниор
 
Регистрация: 09.07.2022
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
В данной задаче это делать нет никакой необходимости. Просто применяйте операцию к двум числам и проверяйте делимость на n.
Да, я согласна, что можно обойтись без этого, но вот задача же требует

Последний раз редактировалось Olivia ._.; 09.07.2022 в 22:18.
Olivia ._. вне форума Ответить с цитированием
Старый 09.07.2022, 21:06   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Olivia ._., нет, это просто пояснение, как рассчитывается "исключающее или".
macomics, да, что-то близкое, но пока можно найти контрпример: a = 5, n = 6, b перебором 3, а формулой 5.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Битовые операции. Исключающее или - затруднение. Вячеслав777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 05.10.2017 16:26
Исключающее ИЛИ Utkin Общие вопросы по программированию, компьютерный форум 17 09.06.2010 16:05
Сокрушительный удар по цитадели спамеров mihali4 Свободное общение 17 17.12.2008 17:59