Модульная экспонента с бинарным представлением экспоненты

Итак, у меня есть задание для вычисления двоичного представления целого числа, а затем обратного преобразования в нотацию справа налево, помещения в вектор и выполнения модульного возведения в степень. У меня нет двоичного представления, но я получаю неправильный ответ, когда дело доходит до модульной части возведения в степень. Это может быть что-то глупое, что я пропустил в коде, но я посмотрел на примеры и не могу понять, в чем может быть проблема. Вот код для модульного возведения в степень здесь.

int ModularExpo(int a, vector<int> K, int n) {
if (n == 1) {
return 0;
}
int b = 1;
int A = a;
if (K[0] == 1) {
b = a;
}
for (unsigned int i = 1; i < K.size() - 1; i++) {
A = A * A % n;
if (K[i] == 1) {
b = A * b % n;
}
}
return b;
}

Поэтому в основном я посылаю в базу (а) показатель степени в двоичном виде в виде вектора с обратным вектором (K) и модуля (n). Инициализируйте 2 переменные b и A, затем проверьте первый индекс, чтобы увидеть, является ли K четным или нечетным, затем перейдите к моему циклу, суммируя все. Все еще не могу понять это.

Любая помощь приветствуется, спасибо.

0

Решение

Хорошо, я на самом деле понял это. Я не проходил весь цикл через вектор, потому что использовал

i < K.size() - 1

когда я должен был использовать либо

i < K.size()

или же

i <= K.size() - 1

по моему за цикл.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector