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