QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#611973 | #8932. Bingo | ucup-team4975 | WA | 0ms | 3552kb | C++23 | 4.5kb | 2024-10-05 00:52:21 | 2024-10-05 00:52:21 |
Judging History
answer
// #define LOCAL
#include <bits/stdc++.h>
#define FINISH cout << "FINISH" << endl;
#define fir first
#define sec second
#define el '\n'
using namespace std;
using PII = pair<int, int>;
using ll = long long;
const int N = 1000010;
void solve()
{
string s1;
ll m, res = 0;
cin >> s1 >> m;
for (int i = s1.size() - 1; i >= 0; i--) {
if (s1[i] != '9') {
// cout << "! " << i << endl;
s1[i] = char(s1[i] + 1);
break;
}
else if (i != 0) {
s1[i] = '0';
}
else {
s1[i] = '0';
s1 = '1' + s1;
}
}
string s2 = to_string(m);
for (int i = 0; i < s1.size(); i++) {
res = res * 10 + (s1[i] - '0');
res = res % m;
}
ll ans = m - res;
// cout << ans << endl;
// ans = 10000000000;
// cout << s1 << " " << s2 << " " <<n ans << endl;
for (int i = 0; i <= s1.size(); i++) {
if (i + s2.size() - 1 >= s1.size())
break;
int flag = 1;
for (int j = 0, k = i; j < s2.size(); j++, k++) {
if (s1[k] != s2[j]) {
flag = 0;
break;
}
}
if (flag == 1) {
cout << s1 << el;
return;
}
}
// FINISH
// cout << s2.size() << endl;
// cout << s1 << " " << s2 << endl;
for (int i = min(17, (int)s1.size() - 1); i >= (int)s2.size() - 1; i--) {
// cout << i << endl;
int st = s1.size() - 1 - i + 1;
ll sum1 = m, sum3 = m, sum4 = m;
for (int j = i - s2.size(); j >= 0; j--) {
sum1 = sum1 * 10 + 9;
sum3 = sum3 * 10 + (s1[s1.size() - 1 - j] - '0');
sum4 = sum4 * 10;
/*cout << j << " " << sum1 << " " << sum3 << " " << s1.size() - 1 -
j
<< " " << s1[s1.size() - 1 - j] << endl;*/
}
// cout << endl;
ll sum2 = 0, _10 = 1;
// cout << int(s1.size() - 1 - i) << " " << int(s1.size() - 1) << endl;
for (int j = s1.size() - 1 - i; j <= s1.size() - 1; j++) {
// cout << " ! " << j << endl;
sum2 = sum2 * 10 + (s1[j] - '0');
_10 = _10 * 10;
}
if (sum2 < sum4) {
// cout << sum1 - sum2 << " ";
ans = min(ans, sum4 - sum2);
}
else {
// cout << sum2 + _10 - sum1 << " ";
ans = min(ans, sum1 + _10 - sum2);
}
/*cout << i << " " << sum1 << " " << sum2 << " " << sum3 << " " << _10
<< endl;*/
}
s1 = "0000000000" + s1;
int st = -1;
for (int i = s1.size() - 9; i >= 0; i--) {
// cout << s1[i];
if (s1[i] != '9') {
st = i;
break;
}
}
// cout << endl;
// cout << st << endl;
string s3 = "a";
if (st != -1) {
s3 = s1;
s3[st]++;
for (int i = st + 1; i < s1.size(); i++)
s3[i] = '0';
// cout << s3 << endl;
}
// cout << ans << endl;
s2 = to_string(ans);
if (s1.size() < s2.size()) {
swap(s1, s2);
}
// cout << s1 << " " << s2 << endl;
for (int i = s1.size() - 1, j = s2.size() - 1; i >= 0 && j >= 0; i--, j--) {
s1[i] = ((s1[i] - '0') + (s2[j] - '0'));
if (s1[i] >= 10) {
s1[i] = char(s1[i] - 10 + '0');
s1[i - 1]++;
}
else
s1[i] = char(s1[i] + '0');
}
for (int i = s1.size() - 1; i > 0; i--) {
if (s1[i] - '0' >= 10) {
s1[i] = char(s1[i] - 10);
s1[i - 1]++;
}
}
// cout << s1 << endl;
st = 0;
for (int i = 0; i <= s1.size(); i++) {
if (s1[i] == '0')
continue;
else {
st = i;
break;
}
}
s1 = min(s1, s3);
// cout << st << endl;
for (int i = st; i < s1.size(); i++)
cout << s1[i];
cout << el;
// FINISH
// cout << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T = 1;
cin >> T;
while (T--) {
solve();
}
return 0;
}
/*4879735984027154057752592811820183345937378730000000000000000
4879735984027154057752592811820183345937378721099999999999555
4879735984027154057752592811820183345937378721100000065986694
17 737872119999999999 721099999999999556 737872119999999556 1000000000000000000
16 73787211999999999 21099999999999556 73787211999999556 100000000000000000
15 7378721199999999 1099999999999556 7378721199999556 10000000000000000
14 737872119999999 99999999999556 737872119999556 1000000000000000
13 73787211999999 99999999999556 73787211999556 100000000000000
12 7378721199999 9999999999556 7378721199556 10000000000000
11 737872119999 999999999556 737872119556 1000000000000
10 73787211999 99999999556 73787211556 100000000000
9 7378721199 9999999556 7378721156 10000000000
8 737872119 999999556 737872116 1000000000
7 73787211 99999556 73787211 100000000
4879735984027154057752592811820183345937378730000000000000000
4879735984027154057752592811820183345937378721100000065986694
4879735984027154057752592811820183345937378721100000000000000
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3552kb
input:
6 7 3 12 3 9 10 249 51 1369 37 2 1
output:
9 13 10 251 1370 4
result:
wrong answer 6th lines differ - expected: '3', found: '4'