版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chimchim04/article/details/84666998
大数乘法: 就是模拟平时竖式相乘的过程,注意进位
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[1000005],b[1000005];
int x[1000005],y[1000005],c[2000005];
int main()
{
while(~scanf("%s%s",a,b))
{
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(c,0,sizeof(c));
int len1=strlen(a),len2=strlen(b),len=len1+len2;
for(int i=len1-1,j=0;i>=0;i--,j++)
x[j]=a[i]-'0';
for(int i=len2-1,j=0;i>=0;i--,j++)
y[j]=b[i]-'0';
for(int i=0;i<len1;i++)
for(int j=0;j<len2;j++)
c[i+j]+=x[i]*y[j];
for(int i=0;i<len;i++)
if(c[i]>9)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
int n=c[len];
while(1)
{
if(c[len]==0)
break;
c[len+1]+=c[len]/10;
c[len]%=10;
len++;
}
while(1)
{
if(c[len-1])
break;
len--;
}
for(int i=len-1;i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
return 0;
}