QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#220917#6300. Best Carry Player 2kokosuki#WA 0ms3896kbC++143.7kb2023-10-20 23:17:432023-10-20 23:17:44

Judging History

你现在查看的是最新测评结果

  • [2023-10-20 23:17:44]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3896kb
  • [2023-10-20 23:17:43]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N =1e5+10;
int a[N],p[N];
char ans[N];
char x[N];
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(r)
	{
		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);
	}
	else
	{
//		cout<<endl<<l<<' '<<r<<' '<<endl;
		while(l>1&&x[l-1]=='9') l--;
//		
		while(k)
		{
			int i=r-k+1;
			if(x[i]=='9')
			{
				ch(i,r);
				continue;
			}
			while(x[l-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;
}
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();
	}
}
//#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();
//	}
//}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3896kb

input:

4
12345678 0
12345678 5
12345678 18
990099 5

output:

1
54322
999999999987654322
9901

result:

wrong answer 4th lines differ - expected: '9910', found: '9901'