大整数乘法
来源:互联网 发布:淘宝无线端模板 编辑:程序博客网 时间:2024/04/29 19:21
#include<stdio.h>#include<string.h>#define MAXLEN 200int main(){ unsigned int a[MAXLEN+10],b[MAXLEN+10]; char str1[MAXLEN+10],str2[MAXLEN+10];//用字符数组存储大整数 unsigned int result[MAXLEN*2+10]; memset(str1,0,MAXLEN+10); memset(str2,0,MAXLEN+10); memset(result,0,sizeof(result)); scanf("%s",str1); scanf("%s",str2); int m=strlen(str1),n=strlen(str2); int i,j; //a[] and b[] for(i=0;i<m;i++) { a[i]=str1[m-1-i]-'0'; } for(j=0;j<n;j++) { b[j]=str2[n-1-j]-'0'; } for(i=0;i<m;i++){ for(j=0;j<n;j++) { result[i+j]+=a[i]*b[j]; } } for(i=0;i<MAXLEN*2;i++){ if(result[i]>=10){ result[i+1]+=result[i]/10; result[i]=result[i]%10; } }int flag=1; for(i=MAXLEN*2;i>=0;i--){ if(flag&&result[i]!=0){ flag=0; } if(!flag)printf("%d",result[i]); } if(flag){printf("0");} printf("\n"); return 0;}