QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#220925#6300. Best Carry Player 2kokosuki#WA 0ms3676kbC++143.7kb2023-10-20 23:32:402023-10-20 23:32:40

Judging History

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

  • [2023-10-20 23:32:40]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3676kb
  • [2023-10-20 23:32:40]
  • 提交

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:'