WA on #5 求助
查看原帖
WA on #5 求助
1028403
封禁用户楼主2024/4/14 10:25

rt,QwQ.

#include <iostream>
#include <algorithm>
using namespace std;
int n, ans[1000010], Ans[1000010], mncnt;
string s;
void Add(string a, string b, int i) {
    reverse(a.begin(), a.end()); // 翻转
    reverse(b.begin(), b.end());
    int Len = max(int(a.size()), int(b.size())), cnt = 0;
    bool flag = false;
    for (int i = 0; i < Len; i++) { // 下面是高精加板子
        int A, B;
        if (a[i] >= '0' && a[i] <= '9') A = (a[i] - '0');
        else A = 0;
        if (b[i] >= '0' && b[i] <= '9') B = (b[i] - '0');
        else B = 0;
        int k = A + B;
        ans[++cnt] = (k % 10 + flag);
        if (k >= 10) flag = true;
        else if (ans[cnt] >= 10) ans[cnt] %= 10, flag = true;
        else flag = false;
    }
    if (flag) ans[++cnt] = 1;
    reverse(ans + 1, ans + 1 + cnt);
    if (i == 1) {
        for (int i = 1; i <= cnt; i++)
            Ans[i] = ans[i];
        mncnt = cnt;
    }
    else { // 取最小
        if (cnt < mncnt) {
            mncnt = cnt;
            for (int i = 1; i <= mncnt; i++)
                Ans[i] = ans[i];
        }
        else if (cnt == mncnt) {
            for (int i = 1; i <= cnt; i++)
                if (ans[i] < Ans[i]) {
                    for (int j = 1; j <= cnt; j++)
                        Ans[j] = ans[j];
                    break;
                }
        }
    }
}
int main()
{
    cin >> n >> s;
    for (int i = 1; i < n; i++) {
        string a = s.substr(0, i); // 这块应该没错吧
        string b = s.substr(i);
        Add(a, b, i);
    }
    for (int i = 1; i <= mncnt; i++) cout << Ans[i];
    return 0;
}
2024/4/14 10:25
加载中...