大数相乘问题

来源:互联网 发布:访问nginx图片显示404 编辑:程序博客网 时间:2024/06/05 06:30

不多说,直接上代码,本人已测试通过。


char* multi(char* number_a, char* number_b){    int lengtha,lengthb;    lengtha = strlen(number_a);    lengthb = strlen(number_b);    char var[lengthb][lengtha+lengthb+10] ;    int s=0;    for(s = 0; s<lengthb; s++)        memset(var[s],0,lengtha+lengthb+10);    int i =0;    for(i = lengthb-1; i >= 0; i--)    {        int j =0;        int m =0;        for(j = lengtha-1; j >=0; j--)        {            int c = number_b[i] - '0';            int d = number_a[j] - '0';            int n = (c * d+m)%10;            char hh[2];            memset(hh,0,2);            itoa(n,hh,10);            var[lengthb-i-1][j+1] = hh[0];            m = (c*d+m) /10 ;        }        char qq[2] ;        memset(qq,0,2);        itoa(m,qq,10);        var[lengthb-i-1][0] = qq[0];    }    for(i=0; i<lengthb; i++)    {        int p = 0;        for(p=0; p< i; p++)        {            strcat(var[i],"0");        }    }    char res [lengtha+lengthb+2] ;    memset(res ,0,lengtha+lengthb+2);    int yy =0;    for(i=0; i<lengtha+lengthb; i++)    {        int g = 0;        int vf = 0;        for(g=0; g<lengthb; g++)        {            int l = strlen(var[g]);            if(l > i)            {                vf+=var[g][l-i-1] - '0' ;            }        }        vf+=yy ;        yy = vf /10 ;        int dd = vf %10 ;        char bg[2];        memset(bg,0,2);        itoa(dd,bg,10);        res[lengtha+lengthb-i-1] = bg[0];    }    for(i=0; i<lengtha+lengthb; i++)    {        if(res[i] == '0')            ;        else        {            char *result = (char*)malloc(lengtha+lengthb+1);            strcpy(result,res+i);            return result;        }    }    return NULL;}

0 0
原创粉丝点击