大数乘法运算实现

来源:互联网 发布:淘宝订单险卖家花钱吗 编辑:程序博客网 时间:2024/05/04 13:20
#include <iostream>#include <string.h>#include <malloc.h>using namespace std;void multiply(const char *a,const char *b){    int ca=strlen(a);    int cb=strlen(b);    int *s=(int *)malloc(sizeof(int)*(ca+cb));    for(int i=0; i<ca+cb; i++)        s[i]=0;    for(int i=0; i<ca; i++)        for(int j=0; j<cb; j++)            s[i+j+1]+=(a[i]-'0')*(b[j]-'0');    for(int i=ca+cb-1; i>=0; i--)        if (s[i]>=10)        {            s[i-1]+=s[i]/10;            s[i]%=10;        }    int k=0;    for(; s[k]==0&&k<ca+cb-1; k++);    for(; k<ca+cb; k++)        cout<<s[k];    cout<<endl;    free(s);}int main(){    string num1,num2;    cin>>num1>>num2;    const char *p1=num1.c_str();    const char *p2=num2.c_str();    multiply(p1,p2);    return 0;}