QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#237974 | #6300. Best Carry Player 2 | REN_REN# | WA | 0ms | 3532kb | C++14 | 1.4kb | 2023-11-04 15:30:35 | 2023-11-04 15:30:37 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
string s;
cin >> s;
int n = s.size();
int k;
cin >> k;
if (k == 0){
int x = 1;
for (int i = 1;i <= n;i ++){
if (s[n - i] == '9') x *= 10;
else{
cout << x << "\n";
return;
}
}
cout << "-1\n";
return;
}
int pos;
for (int i = 0;i < n;i ++){
if (s[n - i - 1] != '0'){
pos = i;
break;
}
}
int dp[n + 1][k + 1][2] = {};
memset(dp,0x3f,sizeof dp);
dp[pos][0][0] = 0;
dp[pos][1][1] = ('9' - s[n - 1 - pos]) + 1;
int q = 1;
for (int i = pos + 1;i < n;i ++){
q = q * 10;
dp[i][0][0] = 0;
for (int j = 1;j <= k;j ++){
dp[i][j][0] = dp[i - 1][j][0];
if (s[i] != '9') dp[i][j][0] = min(dp[i][j][0] , dp[i - 1][j][1]);
if (j > 0) dp[i][j][1] = dp[i - 1][j - 1][1] + q * ('9' - s[n - i - 1]);
if (s[n - i - 1] != '0') dp[i][j][1] = min(dp[i][j][1],dp[i - 1][j - 1][0] + q * ('9' - s[n - i - 1] + 1));
}
}
if (n - pos >= k){
cout << min(dp[n - 1][k][0],dp[n - 1][k][1]);
for (int i = 0;i < pos;i ++)
cout << '0';
cout << "\n";
return;
}
for (int i = 0;i < k - n + pos;i ++)
cout << "9";
cout << dp[n - 1][n - pos][1];
for (int i = 0;i < pos;i ++)
cout << '0';
cout << "\n";
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int t;
cin >> t;
while(t --){
solve();
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3484kb
input:
4 12345678 0 12345678 5 12345678 18 990099 5
output:
1 54322 999999999987654322 9910
result:
ok 4 lines
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3532kb
input:
21 999990000099999 0 999990000099999 1 999990000099999 2 999990000099999 3 999990000099999 4 999990000099999 5 999990000099999 6 999990000099999 7 999990000099999 8 999990000099999 9 999990000099999 10 999990000099999 11 999990000099999 12 999990000099999 13 999990000099999 14 999990000099999 15 999...
output:
100000 10000 1000 100 10 1 900001 9900001 99900001 999900001 10000000001 9999910000 9999901000 9999900100 9999900010 9999900001 99999900001 999999900001 9999999900001 99999999999999999900000000000000000 -1
result:
wrong answer 17th lines differ - expected: '9000009999900001', found: '99999900001'