QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#220925 | #6300. Best Carry Player 2 | kokosuki# | WA | 0ms | 3676kb | C++14 | 3.7kb | 2023-10-20 23:32:40 | 2023-10-20 23:32:40 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N =1e5+10;
#define int long long
int a[30],p[30];
char ans[30];
char x[30];
int k;
int n=strlen(x+1);
void ch(int l,int r)
{
ans[r]='9'-x[r]+'0'+1;
k--;
for(int i=l;i<r;i++)
{
ans[i]='9'-x[i]+'0';
k--;
}
if(l>1&&ans[l-1]>'0') ans[l-1]--;
}
void co(int l,int r)
{
// int s=r-l+1;
for(int i=l;i<=n;i++)
{
if(!ans[i]) ans[i]='0';
}
while(ans[l]=='0') l++;
puts(ans+l);
// cout<<endl;
}
void sl()
{
memset(x,0,sizeof(x));
memset(ans,0,sizeof(ans));
cin>> x+1;
cin>>k;
n=strlen(x+1);
if(k==0)
{
int flag=1;
for(int i=n;i>=1;i--)
{
if(x[i]!='9')
{
cout<<p[n-i]<<endl;
flag=0;
break;
}
}
if(flag) cout<<p[n]<<endl;
return ;
}
int r=n;
while(1)
{
if(a[r]!='0') break;
r--;
}
// cout<<r<<endl;
int l=r-k+1;
// cout<<l<<endl;
// cout<<l<<' '<<r<<' '<<endl;
if(l<1)
{
for(int i=r+1;i<=n;i++)
{
ans[i]='0';
}
ch(1,r);
while(k--)
{
cout<<9;
// l++;
}
puts(ans+1);
return ;
}
else if(x[l-1]!='9'||l==1)
{
ch(l,r);
// for(int i=l;i<=r;i++)
// {
// cout<<ans[i];
// }
// cout<<endl;
co(l,r);
return ;
}
// cout<<endl<<l<<' '<<r<<' '<<endl;
while(l>1&&x[l-1]=='9') l--;
//
while(k)
{
int i=r-k+1;
// cout<<i<<' '<<r<<endl;
if(x[i-1]!='9')
{
ch(i,r);
continue;
}
while(x[i-1]=='9') i--;
int j=i+k-1;
while(x[j]=='0') j--;
if(i>j) continue;
ch(i,j);
i=j;
}
// cout<<l<<' '<<r<<' '<<endl;
// for(int i=l;i<=n;i++)
// {
// cout<<ans[i];
// }
// cout<<endl;
co(l,r);
// cout<<endl<<l<<' '<<r<<' '<<endl;
// cout<<endl;
}
signed main()
{
p[0]=1;
for(int i=1;i<=20;i++)
{
p[i]=p[i-1]*10;
}
int t;
cin>>t;
while(t--)
{
sl();
}
}
//#include<bits/stdc++.h>
//using namespace std;
//typedef long long ll;
//const int N =1e5+10;
//int a[N],p[N];
//int ans[N];
//char x[N];
//int k;
//void ch(int l,int r)
//{
// for(int i=l;i<=r;i++)
// {
// ans[i]=9-a[i];
// k--;
// }
// ans[r]++;
// if(l>1&&ans[l-1]>0) ans[l-1]--;
//}
//void sl()
//{
//
// cin>> x+1;
// cin>>k;
// int n=strlen(x+1);
// for(int i=1;i<=n;i++)
// {
// a[i]=x[i]-'0';
//// cout<<a[i]<<' ';
// }
// if(k==0)
// {
// int flag=1;
//
// for(int i=n;i>=1;i--)
// {
// if(a[i]!=9)
// {
// cout<<p[n-i]<<endl;
// flag=0;
// break;
// }
// }
// if(flag) cout<<p[n]<<endl;
// return ;
// }
// int r;
// for(r=n;r;r--)
// {
// if(a[r]!=0) break;
// }
// int rr=r;
//// cout<<r<<endl;
// int l=r-k+1;
// int op=1;
//// cout<<l<<endl;
// if(l<1)
// {
// ch(1,r);
// while(k--)
// {
// cout<<9;
// l++;
// }
//
// for(int i=1;i<=r;i++)
// {
//// if(op==1&&ans[i]==0) continue;
//// if(ans[i]!=0) op=0;
// cout<<ans[i];
// }
// }
// else if(a[l-1]!=9||l==1)
// {
// ch(l,r);
// for(int i=l;i<=r;i++)
// {
// if(op==1&&ans[i]==0) continue;
// if(ans[i]!=0) op=0;
// cout<<ans[i];
// }
// }
// else
// {
// while(l>1&&a[l-1]==9) l--;
// r=l+k-1;
// rr=r;
//// cout<<endl<<l<<' '<<r<<' '<<a[r]<<endl;
// int cnt=0;
// while(r>l&&a[r]==0) r--,cnt++;
// rr=r;
// while(cnt--)
// {
// cout<<9;
// op=0;
// }
//// cout<<endl;
// ch(l,r);
// for(int i=l;i<=r;i++)
// {
// if(op==1&&ans[i]==0) continue;
// if(ans[i]!=0) op=0;
// cout<<ans[i];
// }
// }
//// cout<<endl<<l<<' '<<r<<' '<<a[r]<<endl;
// for(int i=rr+1;i<=n;i++)
// {
// cout<<0;
// }
// cout<<endl;
//}
//int main()
//{
// p[0]=1;
// for(int i=1;i<=20;i++)
// {
// p[i]=p[i-1]*10;
// }
// int t;
// cin>>t;
// while(t--)
// {
// sl();
// }
//}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3676kb
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: 3656kb
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 89999999999999999: 1000000000000000000
result:
wrong answer 20th lines differ - expected: '99999999999999999900000000000000000', found: '89999999999999999:'