RE on #6 悬关求助
  • 板块学术版
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/14 11:00
  • 上次更新2024/4/14 13:40:38
查看原帖
RE on #6 悬关求助
1028403
封禁用户楼主2024/4/14 11:00

rt,CF1181B,快调疯了……

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n, ans[10000010], Ans[10000010], mncnt;
string s;
bool f;
void Add(string a, string b, bool f) {
    memset(ans, 0, sizeof ans);
    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 (!f) {
        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);
        if (a[0] != '0' && b[0] != '0') {
            Add(a, b, f);
            f = true;
    	}
    }
    for (int i = 1; i <= mncnt; i++) cout << Ans[i];
    return 0;
}
2024/4/14 11:00
加载中...