QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#190445#5460. Sum of NumbersAlfehTL 0ms3608kbC++141.6kb2023-09-28 21:31:152023-09-28 21:31:16

Judging History

你现在查看的是最新测评结果

  • [2023-09-28 21:31:16]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:3608kb
  • [2023-09-28 21:31:15]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long int 
//const int sz = 1e3 + 3, mod = 998244353;
string sum(string a, string b) {
    string ans = "";
    int n = a.size();
    int m = b.size();
    int cary = 0;
    int i = n - 1;
    int j = m - 1;
    while(i >= 0 || j >= 0 || cary) {
        if(i >= 0) {
            cary += (a[i] - '0'); 
            i--;
        }
        if(j >= 0) {
            cary += (b[j] - '0'); 
            j--;
        }
        ans += char('0' + (cary % 10));
        cary /= 10;
    }
    reverse(ans.begin(), ans.end());
    //cout << a << " " << b << " " << ans << "\n";
    return ans;
}
bool cmp(string a, string b) {
    if(a.size() != b.size()) return a.size() < b.size();
    return a < b;
}
int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t; cin >> t;
    while(t--) {
        int n, k; cin >> n >> k;
        string c; cin >> c;
        k++;
        string ans = c;
        int prt = n / k;
        int limit = 1;
        for(int i = 1; i <= k; i++, limit *= 3);
        for(int i = 0; i < limit; i++) {
            std::vector<int> len;
            int i1 = i;
            int lst = 0;
            string crt = "";
            for(int j = 0; j < k; j++) {
                int st = lst;
                int len = prt - 1 + (i1 % 3);
                crt = sum(crt, c.substr(st, len));
                lst += len;
                i1 /= 3;
            }
            if(lst == n)
            if(cmp(crt, ans)) ans = crt;
        }
        cout << ans << "\n";
    }
    return 0; 
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3608kb

input:

2
8 1
45455151
2 1
42

output:

9696
6

result:

ok 2 lines

Test #2:

score: -100
Time Limit Exceeded

input:

10
1301 6
56328399613959594774559774218276494124991536454496431869449134772679831477279356599352619469813771742358572734317965823527349354276551857226632977613336815474383422853946661428822284645652423563864641261338984158269966469425994769486371736593879954275146732544891889693921182364554588732946...

output:

2861837555106640794797067737879913860686764066159587941287350938727749577629356630565034353414526438507603808735990935008225192080065174423508575377930722196909797866802717925250679901255
1330897896655974774035586406544907434842835048336411271110427836483063457950873824562288934364096546537492367401...

result: