好的,所以我有一个用于计算整数的二进制表示的赋值,然后将其反转为从右到左的表示法,并将其放入向量中并对其执行模幂运算。我有二进制表示,但是当它归结为模幂运算部分时,我得到了错误的答案。这可能是我在代码中遗漏的一些蠢事,但我看了一些例子,似乎无法弄清问题是什么。以下是模幂运算的代码。
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是偶数还是奇数,然后进入我的循环总结所有内容。仍然无法弄明白。
感谢任何帮助,谢谢。
答案 0 :(得分:0)
好的,我确实弄明白了。因为我正在使用
,所以我没有在向量中循环i < K.size() - 1
当我应该使用
时i < K.size()
或
i <= K.size() - 1
在我的for循环中。