大数相乘
发布时间:2020-12-14 03:04:15 所属栏目:大数据 来源:网络整理
导读:大数乘法的实现也比较容易理解,相信看了下面的代码,细心分析下就知道了,具体也就不作什么详细分析了。 ==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++== ? ? #includest
大数乘法的实现也比较容易理解,相信看了下面的代码,细心分析下就知道了,具体也就不作什么详细分析了。 ==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++== ? ? #include<stdio.h> #include<string.h> int main() { char a[100],b[100]; int ans[200],res[100][100]={0}; //这里一定要全部初始化为0 int sum=0,i,j,k=0,t,alen,blen; scanf("%s%s",&a,&b); alen=strlen(a); blen=strlen(b); //将a中每位数与b中每位数相乘,下面将结果存入数组中 for(i=0;i<alen;i++) for(j=0;j<blen;j++) { res[i][j]=(a[i]-48)*(b[j]-48); } //计算res右下半个三角数的和 for(i=alen-1;i>=0;i--) { for(j=blen-1;j>=0;j--) sum+=res[i+blen-1-j][j]; ans[k]=sum%10; k++; sum/=10; } //计算res左上半个三角数的和 for(i=blen-2;i>=0;i--) { for(j=0;j<=i;j++) sum+=res[i-j][j]; ans[k]=sum%10; k++; sum/=10; } if(sum) { ans[k]=sum; k++; } //输出结果 printf("ans = "); for(t=k-1;t>=0;t--) printf("%d",ans[t]); printf("n"); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |