高精乘
高精度就是模拟小学生做四则运算的过程
高精度乘法只要注意一下答案和乘数的错位相加即可
思想
回到小学课堂……基本的计算就是这样的
关于乘数和答案的错位相加问题 可以发现这样的规律:ans[i+j-1] + = a[i] * b[j];
关于为什么的问题可以请教小学老师……
特殊的地方
高精乘有一些特殊的地方
每次的的最外层for也就是在处理一个数的一位和另一个数的各个位的乘积向答案加的时候
如果最后余数不为0 需要向最后一位的下一位进行进位 具体看代码
压位
考虑压位的话把读入修改一下就可以 具体请看高精度计算(三)
代码
for(int i = 1; i <= len1; i++) {
x = 0;
len = i + len2 - 1;
for(int j = 1; j <= len2; j++) {
temp[i + j - 1] += a[i] * b[j] + x;
x = temp[i + j - 1] / 10;
temp[i + j - 1] %= 10;
}
if(x>0) temp[++len]+=x;
}
注意+=的细节
欢迎指出Bug
End。