高进度乘法
那位好心帮我看一下问题出在哪呢,,,急!!!!多谢了
输入只包含一行,包括两个整数A和B,A、B用空格隔开。(0<=A,B<=10^1000)
输出格式
输出一行,A和B的乘积。
样例输入
111111111111 111111111111
样例输出
12345679012320987654321
#include<stdio.h>
#include<string.h>
#define l 1001
int main()
{
char s1[l],s2[l],s3[l];
int n1[l],n2[l],n3[l]={0};
int len1,len2,i,j,t;
scanf("%s %s",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
for(i=0,j=len1-1;j>=0;j--,i++) //用下标代替位数,
n1[j]=s1[i]-'0';
for(i=0,j=len2-1;j>=0;i++,j--)
n2[j]=s2[i]-'0';
for(i=0;i=len1-1;i++)
{
for(j=0;i<len2-1;j++)
{
n3[i+j]+=n1[i]*n2[j];
}
j=0;
}
for(i=0;n3[i]!=0;i++) //若过10,向前进1.
{
if(n3[i]>=10)
{
n3[i+1]+=n3[i]/10;
n3[i]=n3[i]%10;
}
}
for(i=2*l;n3[i]==0;i--)
{
if(n3[i]!=0)
t=i;
break;
}
for(j=t;j>=0;j--)
printf("%d ",n3[j]);
printf("\n");
return 0;
}
[ 本帖最后由 双子若尘 于 2013-1-9 14:19 编辑 ]