【发布时间】:2016-11-07 18:37:28
【问题描述】:
好的,所以我有一个任务来计算整数的二进制表示,然后将其反转为从右到左的表示法,并将其放入向量中并对其执行模幂运算。我有二进制表示,但是当涉及到模幂部分时,我得到了错误的答案。这可能是我在代码中遗漏的一些愚蠢的东西,但我查看了示例,似乎无法弄清楚问题可能是什么。这是模幂运算的代码。
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 是偶数还是奇数,然后进入我的循环总结所有内容。还是想不通。
感谢任何帮助,谢谢。
【问题讨论】:
标签: c++ modular exponentiation