用指数的二进制表示的模幂
Modular Exponentiation with binary representation of exponent
好的,我有一个赋值来计算一个整数的二进制表示,然后把它转换成从右到左的符号,把它变成一个向量,然后对它执行模幂。我把二进制表示下来了,但是当它变成模幂部分时,我得到了错误的答案。这可能是我在代码中遗漏的一些愚蠢的东西,但我看过示例,似乎无法找出问题可能是什么。这里是模求幂的代码。
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)。初始化两个变量b和a,然后检查第一个索引,看看K是偶数还是奇数,然后进入我的循环求和所有的东西。还是想不明白。
好了,我算出来了。我没有循环遍历向量因为我用的是
i < K.size() - 1
当我应该使用
i < K.size()
或
i <= K.size() - 1
相关文章:
- 浮点数为 32 位和 64 位二进制表示形式
- 如何将uint8_t的二进制表示形式读取为数字
- 二进制表示,如何获得"相关位"?
- C++ 如何以二进制格式表示字符串?
- 编译器C++如何在二进制代码中表示整数
- 了解浮点数的二进制表示形式
- 如何在 mfc c++ 中流式传输.zip文件夹的二进制表示形式
- 浮点逆二进制表示
- 以C++显示浮点类型的二进制表示形式
- 如何使用C 将二进制数字的字符串转换为其签名的十进制表示
- 在二进制表示中将二进制 std::string 转换为 int
- 如何在没有循环的二进制数字表示中只计算1位
- 如何在计算机内存中打印长双重表示的二进制表示
- 将uint8_t转换为其二进制表示
- 如何在C++中操作和表示二进制数
- 如何在C++中表示二进制字节数组数据
- 如何在编程语言中表示二进制字段
- 如何在C++中表示二进制数(用于霍夫曼编码器)
- 如何在表示二进制文件的字符串中查找整数
- 将表示二进制的字符串转换为表示等效十六进制的字符串