QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#358795#8340. 3 SumKirill22#RE 0ms3740kbC++232.5kb2024-03-20 00:38:022024-03-20 00:38:02

Judging History

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

  • [2024-09-20 10:20:30]
  • hack成功,自动添加数据
  • (/hack/848)
  • [2024-03-20 00:38:02]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:3740kb
  • [2024-03-20 00:38:02]
  • 提交

answer

#include "bits/stdc++.h"

using namespace std;

const int N = (int) 1e5;
int md[3] = {(int) 1e9 + 9, (int) 1e9 + 7, (int) 998244353};
int p[3] = {(int) 1243151, (int) 1343251, (int) 342351};

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, k;
    cin >> n >> k;
    vector<vector<int>> a(n, vector<int> (3));
    vector<int> good(n);
    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        for (int j = 0; j + k < (int) s.size(); j++) {
            while (s[j] > '0') {
                s[j]--;
                int uk = (int) s.size() - 1;
                while (1) {
                    if (s[uk] == '9') {
                        s[uk] = '0';
                        uk++;
                    } else {
                        s[uk]++;
                        break;
                    }
                }
            }
        }
        if ((int) s.size() > k) {
            s = s.substr((int) s.size() - k, k);
        }
        if (std::count(s.begin(), s.end(), '9') == k || std::count(s.begin(), s.end(), '0') == (int) s.size()) {
            s = "0";
            good[i] = 1;
        }
        for (int j = 0; j < 3; j++) {
            for (auto c : s) {
                a[i][j] = (a[i][j] * 10 + c - '0') % md[j];
            }
        }
    }
    vector<vector<int>> res(2, vector<int> (3));
    for (int j = 0; j < 3; j++) {
        string s(k, '9');
        for (auto c : s) {
            res[0][j] = (res[0][j] * 10 + c - '0') % md[j];
        }
        res[1][j] = (res[0][j] + res[0][j]) % md[j];
    }
    int ans = 0;
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            for (int k = j; k < n; k++) {
                if (good[i] && good[j] && good[k]) {
                    ans++;
                    continue;
                }
                for (int t = 0; t < 2; t++) {
                    if (((a[i][0] + a[j][0]) % md[0] + a[k][0]) % md[0] != res[t][0]) {
                        continue;
                    }
                    if (((a[i][1] + a[j][1]) % md[1] + a[k][1]) % md[1] != res[t][1]) {
                        continue;
                    }
                    if (((a[i][2] + a[j][2]) % md[2] + a[k][2]) % md[2] != res[t][2]) {
                        continue;
                    }
                    ans++;
                    break;
                }
            }
        }
    }
    cout << ans;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

4 1
0
1
10
17

output:

3

result:

ok 1 number(s): "3"

Test #2:

score: -100
Runtime Error

input:

500 859
7118711592236878297922359501613604144948355616986970837340677671376753603836852811886591300370143151943368529129749813118476151865844255212534355441611481420938483178075143062691345257288242460282715389758789648541099090735875617822348551942134616963557723055980260082230902505269975518146286...

output:


result: