QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#667143 | #6300. Best Carry Player 2 | libantian | TL | 54ms | 3540kb | C++23 | 2.0kb | 2024-10-22 21:14:15 | 2024-10-22 21:14:48 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int __int128
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define fi first
#define se second
#define all(_a) _a.begin(), _a.end()
int p[40],dp[40];
int a,k;
__int128 read() {
__int128 ans = 0;
string str; cin >> str;
for(int i = 0; i < str.size(); i ++) {
ans = ans * 10 + str[i] - '0';
}
return ans;
}
void print(__int128 x) {
if(x > 9) print(x / 10);
cout << (char)(x % 10 + '0');
}
int get(int a,int b){
int res=0;
int t=0;
// print(a);
// cout<<endl;
// print(b);
// cout<<endl;
while(a||b){
if((a%10)+(b%10)+t>=10){
res++;
t=1;
}else t=0;
a/=10;
b/=10;
}
return res;
}
int res;
int cnt=0;
void dfs(int dep,int x){
if(res!=p[39])return ;
if(dep==0){
if(get(x,a)==k)res=min(res,x);
return ;
}
for(int i=0;i<10;i++){
if(x+i*p[dep]>=res)continue;
// print(x+i*p[dep]+(p[dep]-1));
// cout<<endl;
// print(get(x+i*p[dep]+(p[dep]-1),a));
// cout<<endl;
if(get(x+i*p[dep]+(p[dep]-1),a)>=k){
// print(i);
// cout<<endl;
dfs(dep-1,x+i*p[dep]);
}
}
}
void solve(){
for(int i=0;i<40;i++)dp[i]=0;
res=p[39];
a=read();
k=read();
if(k==0){
int len=0;
while(1){
len++;
int t=a%10;
if(t!=9){
print(p[len]);
cout<<endl;
return ;
}
a/=10;
}
}
dfs(39,0);
print(res);
cout<<endl;
}
signed main(){
// ios::sync_with_stdio(false);
// cin.tie(nullptr), cout.tie(nullptr);
// cout << setiosflags(ios::fixed) << setprecision(15);
int T;
T=1;
p[1]=1;
for(int i=2;i<40;i++)p[i]=p[i-1]*10;
T=read();
while(T--)solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3540kb
input:
4 12345678 0 12345678 5 12345678 18 990099 5
output:
1 54322 999999999987654322 9910
result:
ok 4 lines
Test #2:
score: 0
Accepted
time: 54ms
memory: 3412kb
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 9000009999900001 99000009999900001 999000009999900001 99999999999999999900000000000000000 1000000000000000000
result:
ok 21 lines
Test #3:
score: -100
Time Limit Exceeded
input:
100000 119111011091190000 10 1911011191011999 16 110099199000119 0 19009911191091011 13 199090909919000900 17 19009010011919110 5 90910190019900091 18 10911100000101111 1 110090011101119990 4 100909999119090000 12 90901119109011100 2 111010119991090101 4 900991019109199009 5 100919919990991119 8 911...
output:
88988908810000 8088988808988001 10 88808908989 9800909090080999100 80890 909089809980099909 9 80010 9090000880910000 8900 9909 991 9008900 8880880090 8080090801 8009900808909899 80880898981 909 8800909 99988889901 89908888089 980908890980099000 100 9889801 81 908890008099900891 880990801 9998099 890...