大数相乘,数组模拟
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
char a[50], b[50];
int s[900], na[50], nb[50];
int main()
{
while(scanf("%s%s", a, b)!=EOF)
{
int al=strlen(a);
int bl=strlen(b);
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
memset(s,0,sizeof(s));
for(int i=0; i<al; i++)
na[al-1-i]=a[i]-'0';
for(int i=0; i<bl; i++)
nb[bl-1-i]=b[i]-'0';
if(al==1 && !na[0])
{
printf("0\n");
continue;
}
if(bl==1 && !nb[0])
{
printf("0\n");
continue;
}
for(int i=0; i<al; i++)
{
for(int j=0; j<bl; j++)
{
s[j+i]+=nb[j]*na[i];
for(int k=0; k<500; k++)
{
int mid=s[k];
s[k]=s[k]%10;
s[k+1]+=mid/10;
}
}
}
int ok=1;
for(int i=500; i>=0; i--)
{
if(s[i]!=0 && ok) ok=0;
if(!ok) printf("%d",s[i]);
}
printf("\n");
}
return 0;
}