加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数乘法

发布时间:2020-12-14 03:15:33 所属栏目:大数据 来源:网络整理
导读: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_




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,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;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读