请用c++写个高精度乘法代码
时间: 2024-03-25 12:39:51 浏览: 71
以下是一个简单的C++高精度乘法代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1005;
int a[MAXN], b[MAXN], c[MAXN];
void mul(int *a, int *b, int *c) {
memset(c, 0, sizeof(c));
for(int i = 0; a[i]; i++) {
for(int j = 0; b[j]; j++) {
c[i+j] += a[i] * b[j];
c[i+j+1] += c[i+j] / 10;
c[i+j] %= 10;
}
}
}
int main() {
char str1[MAXN], str2[MAXN];
cin >> str1 >> str2;
int len1 = strlen(str1), len2 = strlen(str2);
for(int i = 0; i < len1; i++) a[i] = str1[len1-i-1] - '0';
for(int i = 0; i < len2; i++) b[i] = str2[len2-i-1] - '0';
mul(a, b, c);
int len3 = strlen(str1) + strlen(str2);
while(len3 > 1 && !c[len3-1]) len3--;
for(int i = len3-1; i >= 0; i--) cout << c[i];
return 0;
}
```
这个代码使用了类似手算乘法的方法,其中a、b、c分别表示两个乘数和它们的积,每次计算时将a和b的每一位相乘,然后将结果累加到c中。在累加过程中,需要注意进位的处理。其中,a和b的每一位的下标从0开始,而c的每一位的下标则是对应的a和b的位数之和。
你可以将输入和输出部分进行修改,以适应你的具体应用场景。
阅读全文