大数乘法

来源:互联网 发布:思纬网络 编辑:程序博客网 时间:2024/06/10 17:32




void Reverse(string &str){//字符串翻转    int Size = str.size();    int i = 0;    int j = Size - 1;    while(i < j){        char temp = str[i];        str[i++] = str[j];        str[j--] = temp;    }}string Multiplic(string &big_num_a,string &big_num_b){//大数乘法    Reverse(big_num_a);    Reverse(big_num_b);    int n = big_num_a.size();    int m = big_num_b.size();    int big_num_len = m + n;    int big_num_c[100];    memset(big_num_c,0,sizeof(big_num_c));    for(int i = 0;i < big_num_a.size();i++){//计算各个位数的和        for(int j = 0;j < big_num_b.size();j++){            big_num_c[i+j] += (big_num_a[i] - '0') * (big_num_b[j] - '0');        }    }    int c = 0;//进位    int t;    for(int i = 0;i < m + n;i++){//进位计算        t = big_num_c[i] + c;        big_num_c[i] = t % 10;        c = t / 10;    }    if(!big_num_c[m+n-1]) big_num_len --;    string strC;    for(int i = big_num_len-1;i >=0;i--)//把得到的值进行翻转        strC += big_num_c[i] + '0';    return strC;}












0 0
原创粉丝点击