Итак, у меня есть задание вычислить двоичное представление целого числа, а затем преобразовать его в нотацию справа налево, поместить его в вектор и выполнить для него модульное возведение в степень. У меня есть двоичное представление, но я получаю неправильный ответ, когда дело доходит до части модульного возведения в степень. Это может быть что-то глупое, что я пропустил в коде, но я просмотрел примеры и не могу понять, в чем может быть проблема. Вот код модульного возведения в степень здесь.
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;
}
Итак, в основном я отправляю базу (a), показатель степени в двоичной форме в виде обратного вектора (K) и модуль (n). Инициализируйте 2 переменные b и A, затем проверьте первый индекс, чтобы увидеть, является ли K четным или нечетным, а затем войдите в мой цикл, суммируя все. Все еще не могу понять.
Любая помощь приветствуется, спасибо.