c++大数乘法

Posted 顾文繁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++大数乘法相关的知识,希望对你有一定的参考价值。

string solve(string s, string t) 
        int l1 = s.size();
        int l2 = t.size();

        if(l1 == 0 || l2 == 0) return "0";
        bool s_is_zero = true;
        bool t_is_zero = true;
        for(int i = 0;i < l1;i++)
            if(s[i] - '0' != 0) s_is_zero = false;
        for(int i = 0;i < l2;i++)
            if(t[i] - '0' != 0) t_is_zero = false;
        if(s_is_zero || t_is_zero) return "0";
        // write code here
        reverse(s.begin(), s.end());
        reverse(t.begin(), t.end());

        vector<int> tmp(l1 + l2, 0);
        for(int i = 0;i < l1;i++)
        
            for(int j = 0;j < l2;j++)
            
                tmp[i + j] += (s[i] - '0') * (t[j] - '0');
            
        
        for(int i = 0;i < l1 + l2;i++)
        
            if(tmp[i] < 0) continue;
            int carry = tmp[i] / 10;
            tmp[i] %= 10;
            tmp[i+1] += carry;
        
        string ret(l1 + l2, '0');
        reverse(tmp.begin(), tmp.end());
        for(int i = 0;i < l1 + l2;i++)
            ret[i] += tmp[i];
        if(ret.size() > 1 && ret[0] == '0')
            return ret.substr(1, ret.size()-1);
        if(ret.empty()) return "0";
        return ret;
    

以上是关于c++大数乘法的主要内容,如果未能解决你的问题,请参考以下文章

c++大数乘法

大数乘法

Karatsuba乘法--实现大数相乘

(转)大数运算——大数乘法

大数乘法(C语言实现)

大数加法大数乘法