100位的大数的乘法
程序代码:#include"stdio.h"
#include"string.h"
void ones(int *s,char *a,char b)//一次运算,两组数据,其中一对的相乘
{
int x=(*a-48)*(b-48);
if(x+*s>=10)
{
*(s+1)+=(x+*s)/10;
*s=(*s+x)%10;
}
else
*s+=x;
}
int main()
{
int T;
char A[105],B[105],*a,*b;
int end[10005];
int i,maxlen,j;
scanf("%d",&T);
int t;
for(t=1;t<=T;t++)
{
memset(A,0,sizeof(char)*8);//赋0;
memset(B,0,sizeof(char)*8);
memset(end,0,sizeof(int)*8);
scanf("%s%s",&A,&B);
if(strlen(A)>=strlen(B))//使之a为最长的数据
{
a=A;
b=B;
}
else
{
a=B;
b=A;
}
for(i=strlen(b)-1;i>=0;i--)//运算顺序
{
for(j=strlen(a)-1;j>=0;j--)
ones(end+(strlen(b)-1-i)+(strlen(a)-1-j),a+j,*(b+i));
}
printf("Case %d:\n",t);
printf("%s * %s = ",A,B);
maxlen=end[strlen(a)+strlen(b)-1-1+1]>0?strlen(a)+strlen(b)-1-1+1:strlen(a)+strlen(b)-1-1;//判断结果是否多一位
for(i=maxlen;i>=0;i--)
printf("%d",end[i]);
printf("\n");
if(t!=T)
printf("\n");
}
}这是我的代码
测试例子
2
1 2
123456789 987654321
输出
Case 1:
1 * 2 = 2
Case 2:
123456789 * 987654321 = 121932631112635269
我测试的时候输出都没有错
但交上去就错了
http://acm.tzc.
题目链接











show代码?
QUIT