解题思路:该题只要求两个正数的乘法,所以不用考虑符号。
根据乘法的特点,首先求出结果对应位上的数字,若大于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;
}
大数乘法算法实现
本文详细介绍了一种处理大数乘法的算法实现,通过字符串转换为数组的方式,利用乘法的基本原理,逐位相乘并处理进位,最终输出结果。文章提供了完整的C++代码示例。
823

被折叠的 条评论
为什么被折叠?



