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.
题目链接