大数相乘

来源:互联网 发布:免费普通话测试软件 编辑:程序博客网 时间:2024/06/06 01:29

在论坛看到的,巨巨Or2

# include<stdio.h># include<string.h># include<malloc.h>char a[100], b[100], c[100];void multiply(char* a,char* b,char* c){    int i,j,ca,cb,* s;    ca=strlen(a);    cb=strlen(b);    s=(int*)malloc(sizeof(int)*(ca+cb));    for (i=0;i<ca+cb;i++)    s[i]=0;    for (i=0;i<ca;i++)    for (j=0;j<cb;j++)    s[i+j+1]+=(a[i]-'0')*(b[j]-'0');    for (i=ca+cb-1;i>=0;i--)    if (s[i]>=10)    {        s[i-1]+=s[i]/10;        s[i]%=10;        }    i=0;    while (s[i]==0)    i++;   for (j=0;i<ca+cb;i++,j++)   c[j]=s[i]+'0';    c[j]='\0';    free(s);}int main(){    while(~scanf("%s%s", a, b))    {        multiply(a, b, c);        printf("%s\n", c);    }    return 0;}


0 0