高精度正整数乘法问题:以下程序用于求任意两个正整数的乘积。程序中用a,b表示这2个正整数,并将它们的乘积存于数组ab 中。根据数的乘法规则,将 a的所有位与b的所有位从低位至高位两两相乘。设a的第i位与b的第j位相乘的结果加到乘积ab的第i+j-1位上。乘法结束,考虑每一位的进位。最后输出乘积的结果。
#include<iostream> using namespace std; const int n=110; int a[n],b[n],ab[n*2]={0}; void Init( int a[],_____(1)_____) { string st; cin>>st; len=st.size(); for( int i=len-1,j=1;i>=0;i--,j++) a[j]=st[i]-'0'; } void pr( int a[],int len) { for( int i=len;i>=1;i--) { cout<<a[i]; } cout<<endl; } int main() { int la,lb; Init(a,la); Init(______(2)_____); for( int i=1;i<=la;i++) { for( int j=1;j<=lb;j++) { ______(3)_____=a[i]*b[j]; } }//逐位做乘法 int lab=la+lb-1; for( int i=1;i<=lab;i++) { ______(4)_______; ab[i]%=10; }//考虑进位 while(ab[lab+1]) { lab++; _____(5)_______; ab[lab]%=10; }//考虑最高位 pr(_____(6)_____); return 0; }