栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++大数乘法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 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;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号