8 条题解

  • 1
    @ 2025-3-16 10:42:57

    I like "高精"

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    vector<int> stringToVector(const string& num) 
    {
    vector<int>digits(num.length());
    for (int i=0;i<num.length();++i)
    {
    digits[num.length()-i-1]=num[i]-'0';
    }
    return digits;
    }
    string highPrecisionAddition(const string& num1, const string& num2) 
    {
    vector<int>digits1=stringToVector(num1);
    vector<int>digits2=stringToVector(num2);
    int maxLength=max(digits1.size(),digits2.size());
    vector<int> result(maxLength+1,0);
    for (int i=0; i<maxLength;++i) 
    {
    if (i<digits1.size()) result[i]+=digits1[i];
    if (i<digits2.size()) result[i]+=digits2[i];
    if (result[i] >=10) 
    {
    result[i+1]+=result[i]/10;
    result[i]%=10;
    }
    }
    string sum;
    bool leadingZero = true;
    for (int i=result.size()-1;i>=0;--i)
    {
    if (result[i]==0&&leadingZero&&i!=0) continue;
    leadingZero=false;
    sum+=result[i]+'0';
    }
    return sum;
    }
    int main() 
    {
    string num1, num2;
    cin>>num1>>num2;
    cout<<highPrecisionAddition(num1, num2)<<endl;
    return 0;
    }
    

    信息

    ID
    1
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    568
    已通过
    230
    上传者