20分蒟蒻在线求助
  • 板块P1942 词编码
  • 楼主老撕鸡
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/1/31 15:40
  • 上次更新2023/11/5 04:05:17
查看原帖
20分蒟蒻在线求助
362539
老撕鸡楼主2021/1/31 15:40
#include<bits/stdc++.h>
using namespace std;
int n,a[2000],i1,i2,b[2000],d,i3;
char c;
int main()
{
	cin>>n;
	c=getchar();
	while(c!=EOF)
	{
		i1=0;
		d=0;
		i2=0;
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		c=getchar();
		while((c!='\n')&&(c!=EOF))
		{
			if((c=='0')||(c=='1'))
			{
				i1++;
				a[i1]=c-'0';
			}
			c=getchar();
		}
		if(i1==0) continue;
		for(int i=n+1;i>=1;i--) b[i]=b[i+1]+a[i];
		for(int i=1;i<=n+1;i++) if(a[i]==1) d+=i;
		if(n+1==i1)
		{
			i2=0;
			for(int i=1;i<=n;i++)
			{
				if(a[i]==1)
				{
					if((d-b[i]-i+1)%(n+1)==0) {i2=i; break;}
				}
				else
				{
					if((d-b[i])%(n+1)==0) {i2=i; break;}
				}
			}
			if(i2==0) printf("-1\n");
			else
			{
				for(int i=1;i<=n+1;i++)
				{
					if(i!=i2) printf("%d",a[i]);
				}
				printf("\n");
			}
		}
		else if(n-1==i1)
		{
			i3=0;
			for(int i=1;i<=n;i++) 
			{
				if((d+b[i])%(n+1)==0) {i2=i; break;}
				else if((d+b[i]+i)%(n+1)==0) {i2=i; i3++; break;}
			}
			if(i2==0) printf("-1\n");
			else
			{
				for(int i=1;i<=n-1;i++)
				{
					if(i==i2)
						printf("%d",i3);
					printf("%d",a[i]);
				}
				if(i2==n) printf("%d",i3);
				printf("\n");
			}
		}
		else if(n==i1)
		{
			if(d%(n+1)==0)
			{
				for(int i=1;i<=n;i++) cout<<a[i];
			}
			else
			{
				for(int i=1;i<=n;i++)
					if(((d-i)%(n+1)==0)&&(a[i]==1)) {i2=i; break;}
				if(i2==0) printf("-1\n");
				else
				{
					for(int i=1;i<=n;i++)
					{
						if(i==i2)
							printf("0");
						else {printf("%d",a[i]);}
					}
					printf("\n");
				}
			}
		}
		else printf("-1\n");
	}
	return 0;
}
2021/1/31 15:40
加载中...