问题 3804 --大数乘法(完善程序)

3804: 大数乘法(完善程序)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 348  解决: 283
[提交][状态][命题人:]

题目描述

高精度正整数乘法问题:以下程序用于求任意两个正整数的乘积。程序中用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;
}


输入

输出

样例输入
Copy
123
45
样例输出
Copy
5535

提示

来源

[提交][状态]