Высшее по модулю группы чисел - PullRequest
0 голосов
/ 22 мая 2019

Я написал некоторый код, который проходит через все перестановки заданного числа и возвращает тот, который имеет наивысшее значение по модулю 8.

Что мне сейчас интересно, есть ли алгоритм / набор правил, по которому я мог бы автоматически исключать перестановки, которые не могут иметь по модулю 8 больше, чем текущее число?

Я обдумывал это и не могу понять, но я уверен, что есть что-то, что можно сделать, чтобы оптимизировать количество проверенных перестановок.

Модульная арифметика на самом деле не моя сильная сторона.

Заранее спасибо, если есть идеи!

1 Ответ

1 голос
/ 22 мая 2019

Нет более быстрого пути.

Если число не было степенью двойки, оно было бы медленным, но компилятор знает, как с этим справиться, потому что y = x % 8; совпадает с y = x & 0x7;. Таким образом, для выполнения этой работы требуется всего две операции: сначала извлечь 3 LSbit, а затем сравнить.

Здесь нет возможных микрооптимизаций.

...