兩個大數相乘
# include<stdio.h>
# include<string.h>
# include<algorithm>
using namespace std;
char a[300],b[300];
int main()
{
while(scanf("%s%s",a,b)!=EOF)
{
if(a[0]=='0'||b[0]=='0')
{
printf("0\n");
continue;
}
int length_a=strlen(a);
int length_b=strlen(b);
reverse(a,a+length_a);
reverse(b,b+length_b);
int ans[600];
memset(ans,0,sizeof(ans));
for(int i=0;i<length_a;i++)
{
int temp[600],s,c=0;
memset(temp,0,sizeof(temp));
for(int j=0;j<length_b;j++)
{
s=(a[i]-48)*(b[j]-48)+c;
temp[j+i]=s%10;
c=s/10;
}
int cycle=0;
while(c!=0)
{
temp[cycle+i+length_b]=c%10;
c/=10;
cycle++;
}
c=0;
for(int k=0;k<600;k++)
{
s=temp[k]+ans[k]+c;
ans[k]=s%10;
c=s/10;
}
}
int sign;
for(int i=599;i>=0;i--)
{
if(ans[i])
{
sign=i;
break;
}
}
for(int i=sign;i>=0;i--) printf("%d",ans[i]);
printf("\n");
}
return 0;
}