С учетом трех положительных целых чисел a
, b
и n
(чьи максимальные значения являются максимальным представимым целочисленным значением в вашем языке) выведите истинное значение if a ≡ b (mod n)
и false в противном случае. Для тех, кто не знаком с отношениями конгруэнтности, a ≡ b (mod n)
это верно, если a mod n = b mod n
(или, что эквивалентно, (a - b) mod n = 0
)
ограничения
- Встроенные методы проверки соответствия запрещены
- Встроенные операции по модулю запрещены (это включает в себя такие операции, как
divmod
функция Python , которая возвращает как частное, так и остаток, а также функции делимости, системные функции вычетов и т. П.)
Тестовые случаи
(1, 2, 3) -> False
(2, 4, 2) -> True
(3, 9, 10) -> False
(25, 45, 20) -> True
(4, 5, 1) -> True
(83, 73, 59) -> False
(70, 79, 29) -> False
(16, 44, 86) -> False
(28, 78, 5) -> True
(73, 31, 14) -> True
(9, 9, 88) -> True
(20, 7, 82) -> False
Это код-гольф , поэтому выигрывает самый короткий код (в байтах) с самым ранним представлением в качестве тай-брейка.
code-golf
math
arithmetic
Mego
источник
источник
/
?Ответы:
Желе, 5 байт
Интенсивное использование всего, что не запрещено, разрешено.
Попробуйте онлайн!
Как это работает
источник
Python 2, 27 байт
Проверяет,
a-b
является ли кратное,n
путем деления наn
, которое автоматически определяет этаж, и определяет,n
дает ли умножение обратно на тот же результат.источник
Юлия, 24 байта
Это функция, которая принимает три целых числа и возвращает логическое значение.
Мы просто проверяем, равно ли целое число a - b, деленное на n, числу a - b, деленному на n . Это будет верно, когда нет остатка от деления, то есть a - b | n , что означает, что a - b (mod n ) = 0.
источник
Pyth, 7 байт
Использует циклическое индексирование Пита.
источник
Haskell, 23 байта
Пример использования:
(28#78)5
->True
.Тот же метод, что и в ответе @ xnor .
источник
Минколанг 0,15 ,
1411 байтПопробуй это здесь! Ввод ожидается как
a b n
.Объяснение:
источник
MATL , 9 байт
Формат ввода
Попробуйте онлайн!
источник
Сетчатка , 20
Ввод дан в одинарном, разделенном пробелами порядке
n a b
. Выход 1 для правды и 0 для фальси.Попробуйте онлайн.
Если вы предпочитаете десятичный ввод, вы можете сделать это:
Попробуйте онлайн.
источник
APL, 15 байт
Это двоичная функция, которая принимает n слева и a и b как массив справа.
Подход здесь в основном такой же, как в моем ответе Юлии . Мы проверяем, равен ли a - b / n полу самого себя, что будет верно, если a - b (mod n ) = 0.
источник
d=⌊d←⎕÷⍨-/⎕
JavaScript (ES6), 27 байт
@ CᴏɴᴏʀO'Bʀɪᴇɴ опубликовал версию, которая не работает; Вот «общий алгоритм», который люди используют в форме, которая «работает»:
Слово «works» находится в пугающих кавычках, потому что ярлык, который мы используем для
Math.floor()
неявного усечения числа, должно быть в 32-битном диапазоне со знаком, поэтому он не может обработать полное 52-битное или целое пространство целых чисел, которое может JavaScript описать.источник
(2, 150, 3) :: (Word8, Word8, Word8)
вами критерий явно «если теоретически существует вход, который делает ответ недействительным, ответ следует считать недействительным».)(a - b) == a
для определенных значенийa
. Ответ, который должен быть действителен в этих пограничных областях, почти невозможен, даже если я беру штраф за байты и заменяю(0|...)
наMath.floor(...).
CJam, 7 байтов
Порядок ввода есть
n a b
.Проверьте это здесь.
объяснение
источник
Python 3, 27 байт
pow(x,y,n)
рассчитывает(x**y)%n
, так что это просто(a-b)**1%n
.источник
ES6, 28 байт
Работает, ища десятичную точку в (ab) / n, которая, я надеюсь, разрешена.
источник
Серьезно, 10 байт
Принимает ввод как
N\nA\nB\n
(заглавные буквы используются для отличия от новой строки).Попробуйте онлайн
Это использует тот же метод, что и ответ @ AlexA
Пояснение (заглавные буквы используются в качестве имен переменных для пояснительных целей):
источник
F #, 24 байта
Реализует ту же проверку, что и ответ @ xnor .
источник