QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#613607 | #8251. Missing Number | eggtoast | RE | 0ms | 3912kb | C++17 | 1.8kb | 2024-10-05 14:19:19 | 2024-10-05 14:20:36 |
Judging History
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...