输入两个很大的正数(用C字符串去表示),输出它们的乘积,假设不考虑非法输入
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include<assert.h>
void multiply(const char*a,const char* b)
{
assert(a!=NULL&&b!=NULL);
int la=strlen(a);
int lb=strlen(b);
int length=la+lb;
int* s=(int*)malloc(sizeof(int)*length);
memset(s,0,length*sizeof(int));
for(int i=0;i<la;++i)
{
for(int j=0;j<lb;++j)
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
}
for(int i=length-1;i>=0;i--)
{
if(s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]%=10;
}
}
for(int i=0;i<length;i++)
{
if(s[i]!=0)
printf("%d",s[i]);
}
printf("\n");
free(s);
}
int main()
{
char a[]="9999";
char b[]="55555";
multiply(a,b);
}