亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Leetcode-43 劃水記錄06 大數乘法

發布時間:2020-07-28 12:40:14 來源:網絡 閱讀:314 作者:hzChan 欄目:編程語言
給定兩個以字符串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字符串形式。

示例 1:

輸入: num1 = "2", num2 = "3"
輸出: "6"
示例 2:

輸入: num1 = "123", num2 = "456"
輸出: "56088"
說明:

num1 和 num2 的長度小于110。
num1 和 num2 只包含數字 0-9。
num1 和 num2 均不以零開頭,除非是數字 0 本身。
不能使用任何標準庫的大數類型(比如 BigInteger)或直接將輸入轉換為整數來處理。

我的實現方法是模擬兩個數乘法的豎式計算,但是速度好像不怎么好

string multiply(string num1, string num2) {
    int len1 = (num1).size();
    int len2 = (num2).size();
    string pLong = len1>len2?num1:num2;
    string pShor = len1<=len2?num1:num2;
    map<int,vector<int>> iRes;
    for (int iXhbl=pShor.size()-1;iXhbl>=0;iXhbl--)
    {
        int iCarry = 0;//進位控制
        string iResult;
        for (int iXhbl2=pLong.size()-1;iXhbl2>=0;iXhbl2--)
        {
            int iSum=0;
            if (iCarry)
            {
                iSum += iCarry;
                iCarry = 0;
            }
            iSum += (pLong[iXhbl2] - '0')*(pShor[iXhbl]-'0');
            if (iSum >= 10)
                iCarry = iSum/10;
            iResult +=( iSum % 10)+'0';
            int djw = (pShor.size()-1- iXhbl) + 1 + (pLong.size() - 1 - iXhbl2);
            iRes[djw].push_back((iSum % 10));
        }
        if (iCarry)
        {
            int djw = (pShor.size() - 1 - iXhbl) + 1 + pLong.size();
            iRes[djw].push_back((iCarry ));
            iResult += iCarry + '0';
        }
    }
    int iCarry = 0;
    string iRest;
    for (int iXhbl=1;iXhbl<=pLong.size()+pShor.size();iXhbl++)
    {
        if (iRes[iXhbl].size() > 0)
        {
            int iSum = 0;
            for (int iXhbl2=0;iXhbl2< iRes[iXhbl].size();iXhbl2++)
            {
                iSum += iRes[iXhbl][iXhbl2];
            }
            if (iCarry)
            {
                iSum += iCarry;
                iCarry = 0;
            }
            if (iSum >= 10)
                iCarry = iSum / 10;

                iRest = iRest + (char)((iSum % 10) + '0');
        }
    }
    if (iCarry)
    {
        iRest = iRest + (char)((iCarry % 10) + '0');
    }
    std::reverse(iRest.begin(), iRest.end());
    //去除多余的0
    int zeroNums=0;
    for (int iXh=0;iXh<iRest.size()-1;iXh++)
    {
        if (iRest[iXh] == '0')
        {
            zeroNums++;
        }
        else
            break;
    }
    iRest.erase(0, zeroNums);
    return iRest;
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳池县| 来安县| 南汇区| 崇仁县| 台前县| 伊宁县| 桂阳县| 盖州市| 尤溪县| 峨边| 惠东县| 监利县| 色达县| 红桥区| 北票市| 南乐县| 长沙县| 广河县| 梁平县| 盐源县| 从化市| 寿阳县| 吐鲁番市| 惠水县| 大足县| 旌德县| 藁城市| 台山市| 镇沅| 威海市| 霍林郭勒市| 杨浦区| 沙坪坝区| 新郑市| 新丰县| 海淀区| 平度市| 连州市| 南溪县| 乌鲁木齐市| 北辰区|