Близько року тому вас попросили знайти праймери XOR . Це числа, єдиними факторами яких є 1, і вони самі при виконанні множення XOR у базі 2 . Зараз збиралися трохи приправити речі.
Ми знайдемо праймери XOR в базі -2
Перехід до бази -2
База -2 дуже схожа на будь-яку іншу базу. Найбільше ліве місце займає 1-е місце (1 = (-2) 0 ), поруч з ним - -2-е місце (-2 = (-2) 1 ), поруч із цим 4-е місце (4 = (-2) ) 2 ) тощо і так далі. Велика різниця полягає в тому, що негативні числа можна представити в базі -2 без будь-якого негативного ознаки.
Ось кілька прикладів переходів:
Decimal | Base -2
-----------------
6 | 11010
-7 | 1001
12 | 11100
-15 | 110001
Додавання XOR в базі -2
Додавання XOR в Base -2 майже аналогічно додаванню XOR у двійковій. Ви просто конвертуєте число в Base -2 і XOR кожну цифру на своєму місці. (Це те саме, що додавання без перенесення)
Ось приклад, розроблений поетапно:
(Ми будемо використовувати символ +'
для позначення додатку Base -2 XOR)
Початок з бази 10:
6 +' -19
Перетворити в базу -2:
11010 +' 10111
Додайте їх, не несучи:
11010
+' 10111
---------
01101
Перетворіть результат назад у базу 10:
-3
Множення XOR в базі -2
Знову множення XOR у базі -2 майже те саме, що множення XOR у двійковій. Якщо ви не знайомі з XOR множення в базі 2 є відмінне пояснення тут я пропоную вам поглянути на це перше.
Множення XOR в Base -2 - це те саме, що виконувати довге множення в базі -2, за винятком випадків, коли мова йде про останній крок замість додавання всіх чисел до традиційного, який +
ви використовуєте у +'
визначеному нами вище.
Ось приклад, розроблений нижче:
Почніть з десяткової:
8 *' 7
Перетворити в базу -2:
11000 *' 11011
Налаштування довгого поділу:
11000
*' 11011
---------
Помножте перше число на кожне місце у другому
11000
*' 11011
------------
11000
11000
0
11000
11000
Додайте всі результати за допомогою додавання бази -2 XOR
11000
*' 11011
-------------
11000
11000
0
11000
+' 11000
-------------
101101000
Перетворити результат назад у десятковий:
280
Змагання
Ваше завдання полягає в тому, щоб перевірити, чи число є простим числом XOR в базі -2. Число є простим числом XOR в базі -2, якщо єдиною парою цілих чисел, що множать його в базі, є 1 і сама. (1 не є простим)
Ви візьмете число і виведете булеву, тритуму, якщо в іншому випадку вхід є простім XOR в базовій -2 хибній.
Рішення будуть оцінюватись у байтах із досягненням якнайменшої кількості байтів.
Тестові справи
Нижче наведено всі праймери XOR в базі -2:
-395
-3
-2
3
15
83
Нижче не є праймерами XOR у базі -2:
-500
-4
0
1
258
280
258
здається рівним-2 *' -129 = 10 *' 10000011