大整数乘法

来源:互联网 发布:淘宝无线端模板 编辑:程序博客网 时间: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;}