QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#613346#8251. Missing NumbereggtoastRE 0ms3720kbC++172.0kb2024-10-05 13:56:482024-10-05 13:58:37

Judging History

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

  • [2024-10-05 13:58:37]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:3720kb
  • [2024-10-05 13:56:48]
  • 提交

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;

        //cout << s << '\n';
        int flg = 0;
        int start = 0;
        while(n >= 1){
            string sub = (s.substr(0, n));
            string other = (s.substr(n, n));

            int x1 = stoi(sub);
            int x2 = stoi(other);

            //cout << "x1 " << x1 << ' ' << "x2 " << x2 << '\n';

            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
            //pop off numbers until we find the missing number.
            int curr = start;
            while(!s.empty()){
                int digitsLeft = log10(curr) + 1;

                //cout << s << '\n';

                if(stoi(s.substr(0, digitsLeft)) != curr){
                    //cout << curr << " and " << s.substr(0, digitsLeft) << '\n';
                    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 << start + 1 << '\n';
            continue;
        }

        //cout << "flag is " << flg << '\n';
    }

}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: