解题思路:该题只要求两个正数的乘法,所以不用考虑符号。
根据乘法的特点,首先求出结果对应位上的数字,若大于9,则进位C[i]/10;原位上的数字变为C[i]%10;
最后输出的时候注意从非零位开始输出。
源码附上:
#include <iostream>
using namespace std;
char a[1001],b[1001];
int aa[1001],bb[1001];
int c[3000];
int main()
{
cin>>a>>b;
int la=strlen(a);
int lb=strlen(b);
int i,j,k;
k=0;
for(i=la-1;i>=0;i--)
{
aa[k++]=a[i]-'0';
}
k=0;
for(j=lb-1;j>=0;j--)
{
bb[k++]=b[j]-'0';
}
for(i=0;i<la;i++)
{
for(j=0;j<lb;j++)
{
c[i+j]+=aa[i]*bb[j];
}
}
int lc=la+lb;
for(i=0;i<lc;i++)
{
if(c[i]>9)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
while(c[lc]==0)
{
lc--;
}
for(i=lc;i>=0;i--)
{
cout<<c[i];
}
cout<<endl;
return 0;
}