高精度乘法也就是大数乘法, 到数字超过long long后就需要用数组存数了, 此时数的加减乘除就无法直接计算, 今天就写一写乘法运算;
void high_precisionMultiplication(string a, string b)//a, b表示两个因子;
{
vector<int> factor_a, factor_b, product;
int len_a=a.size(), len_b=b.size();
int i=0, j;
/***将两个因子转化成int数组, 这里用vector***/
while(i<len_a){
factor_a.push_back(a[i++]-'0');
}
reverse(factor_a.begin(), factor_a.end());
i=0;
while(i<len_b){
factor_b.push_back(b[i++]-'0');
}
reverse(factor_b.begin(), factor_b.end());
/*******************************************/
/***初始化***/
for(i=0; i<len_a+len_b; i++)
product.push_back(0);
for(i=0; i<len_a; i++){
for(j=0; j<len_b; j++){
product[i+j]+=factor_a[i]*factor_b[j];
}
}
int tem=0, tt;
for(i=0; i<len_a+len_b; i++){
tt=(product[i]+tem)/10;
product[i]=(product[i]+tem)%10;
tem=tt;
}
/***除去前导零***/
for(i=len_a+len_b-1; i>0; i--)
if(product[i]==0) product.pop_back();
else break;
reverse(product.begin(), product.end());
int len=product.size();
/***输出乘积***/
for(i=0; i<len; i++)
cout << product[i];
cout << endl;
}