0分求助
查看原帖
0分求助
645099
xujunjieAC楼主2021/12/21 13:08
#include<iostream>
#include<string>
using namespace std;

bool compare(string& s1, string& s2)
{
    if (s1.length() > s2.length())return 1;
    else if (s1.length() == s2.length())return -1;
    else return 0;
}
string add(string& s1, string& s2)
{
    int a = abs(int(s1.length() - s2.length()));
    //补0
    if (compare(s1, s2))
    {
        for (int i = 0; i < a; i++) {
            s2 = '0' + s2;
        }
    }
    else if (!compare(s1, s2))
    {
        for (int i = 0; i < a; i++) {
            s1 = '0' + s1;
        }
    }
    string s = "";
    int carr = 0;    //进位
    int temp = 0;
    for (int i = s1.length() - 1; i >= 0; i--)
    {
        temp = s1[i] - '0' + s2[i] - '0' + carr;
        carr = 0;
        if (temp >= 10)
        {
            carr = temp / 10;
            temp = temp % 10;
        }
        s = char(temp + '0') + s;
    }
    if (carr != 0)
    {
        s = char(carr + '0') + s;
    }

    return s;
}

string muti(string& s1, string& s2)
{
    string s = "0";
    if (s1 == "0" || s2 == "0")
    {
        return s;
    }
    for (int i = s2.length()-1; i >=0; i--)
    {
        string stemp = "";
        int temp;
        int carr = 0;
        for (int i1 = s1.length()-1; i1 >=0; i1--)
        {
            temp = (s1[i1] - '0') * (s2[i] - '0')+carr;
            carr = 0;
            if (temp >= 10)
            {
                carr = temp / 10;
                temp = temp % 10;
            }
            stemp = char(temp + '0') + stemp;
        }
        for  (int i2=s2.length()-i-1; i2>0; i2--)
        {
            stemp = stemp + '0';
        }

        if ( carr != 0)
        {
            stemp = char(carr + '0') + stemp;
        }

        s = add(stemp, s);
    }
    return s;
}
int main()
{
    string s1, s2, s;
    getline(cin, s1);
    getline(cin, s2);

    s = muti(s1, s2);
    cout << s;
    return 0;
}
2021/12/21 13:08
加载中...