#include<stdio.h>
#include<string.h>
#define MAX 200
int an1[MAX+10];
int an2[MAX+10];
int aResult[2*MAX+10];
char szLine1[MAX+10];
char szLine2[MAX+10];
int main()
{
gets(szLine1);//gets函数读取一行
gets(szLine2);
memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
memset(aResult,0,sizeof(aResult));
int len1=strlen(szLine1);
int len2=strlen(szLine2);
int j=0,i;
for(i=len1-1;i>=0;i--)
an1[j++]=szLine1[i]-'0';
j=0;
for(i=len2-1;i>=0;i--)
an2[j++]=szLine2[i]-'0';
for(i=0;i<len2;i++)
{
for(j=0;j<len1;j++)
aResult[i+j]+=an2[i]*an1[j];//an2的第i位与an1的第j位的乘积放在结果的第i+j位
}
for(i=0;i<2*MAX;i++)//最后统一进行进位处理
if(aResult[i]>=0)
{ aResult[i+1]+=aResult[i]/10;
aResult[i]=aResult[i]%10;
}
bool bStartOutput=false;
for(i=2*MAX;i>=0;i--)
if(bStartOutput||aResult[i])
{ printf("%d",aResult[i]);
bStartOutput=true;
}
if(!bStartOutput)
printf("0");
printf("/n");
return 0;
}
大数乘法
最新推荐文章于 2024-08-29 20:40:47 发布