QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#613607#8251. Missing NumbereggtoastRE 0ms3912kbC++171.8kb2024-10-05 14:19:192024-10-05 14:20:36

Judging History

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

  • [2024-10-05 14:20:36]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:3912kb
  • [2024-10-05 14:19:19]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

int main() {
    int t;
    cin >> t;
    while(t--) {
        string s;
        cin >> s;
        int n = s.size() / 2;

        unsigned long long flg = 0;
        unsigned long long start = 0;
        while(n >= 1) {
            string sub = s.substr(0, n);
            string other = s.substr(n, n);

            unsigned long long x1 = stoull(sub);
            unsigned long long x2 = stoull(other);

            if((x2 == x1 + 1) || (x2 == x1 + 2)) {
                if(x2 == x1 + 1) {
                    flg = 1; // we know the starting point, so we look for the missing number
                    start = x1;
                } else {
                    flg = 2; // case where 2nd number is missing
                    start = x1;
                }
                break;
            } 
            n--;
        }

        // if flg == 0, no missing numbers
        if(flg == 0) {
            cout << 0 << '\n';
            continue;
        } else if (flg == 1) {
            // we loop from start to end to find the missing number.
            unsigned long long curr = start;
            while(!s.empty()) {
                int digitsLeft = log10(curr) + 1;

                if(stoull(s.substr(0, digitsLeft)) != curr) {
                    cout << 1 << '\n';
                    cout << curr << '\n';
                    break;
                }

                s.erase(0, digitsLeft);
                curr++;
            }

            // if string is empty that means no missing numbers either
            if(s.empty())
                cout << 0 << '\n';

        } else if (flg == 2) {
            cout << 1 << '\n';
            cout << start + 1 << '\n';
            continue;
        }
    }
}

详细

Test #1:

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

input:

1
891112

output:

1
10

result:

ok 2 lines

Test #2:

score: -100
Runtime Error

input:

31408
787187871978720787217872278723787247872678727
8787287874878758787687877
834918349283493834958349683497
295982959929600296012960229604
602160226023602460256027602860296030
504545045550456504575045850459504605046250463
17937179381794017941
5226152262522635226552266
304693047030471304733047430475...

output:


result: