0pts求助
查看原帖
0pts求助
169594
Heart_Of_Iron_4楼主2022/8/24 11:55

rt,ACsubtask#1,#4

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct gj
{
	char num[50000100];
	int len;//1
}a,b;//a>b
bool f;
gj hf(gj k)
{
	char temp=0;
	for(int i=k.len;i>=1;--i)
	{
		temp*=10;
		temp+=k.num[i];
		k.num[i]=temp/2;
		temp%=2;
	}
	if(k.num[k.len]==0)k.len--;
	return k;
}
gj c2(gj k)
{
	char temp=0;
	for(int i=1;i<=k.len;++i)
	{
		k.num[i]*=2;
		k.num[i]+=temp;
		temp=0;
		if(k.num[i]>10)temp=1,k.num[i]-=10;
	}
	if(temp)k.num[++k.len]=1;
	return k;
}
int t[20],n,t1,t2,t3,t4;
signed main()
{
	scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&t[0],&t[1],&t[2],&t[3],&t[4],&t[5],&t[6],&t[7],&t[8],&t[9]);
	n=t[0]+t[1]+t[2]+t[3]+t[4]+t[5]+t[6]+t[7]+t[8]+t[9];
	t3=a.len=max(n/2,(n+1)/2);t4=b.len=n-max(n/2,(n+1)/2);
	if(t[9]>2)a.num[a.len]=b.num[b.len]=9,t[9]-=2;
	else a.num[a.len]=9,b.num[b.len]=8,t[9]-=1,t[8]-=1,f=1;
	n=9;t3--,t4--;
	while(t[n]==0)n--;
	while(n>=0)
	{
		t1=n;t[n]--;
		while(n>=0&&t[n]==0)n--;
		if(n<0){t2=1145141919810;break;}
		t2=n;t[n]--;
		while(n>=0&&t[n]==0)n--;
	//	cerr<<t3<<" "<<t4<<" "<<t1<<" "<<t2<<" "<<n<<endl;
		if(f)
		{
			a.num[t3--]=t2;
			b.num[t4--]=t1;
		}
		else
		{
			a.num[t3--]=t1;
			b.num[t4--]=t2;
			if(t1>t2)f=1;
		}
	}
	if(t2==1145141919810)a.num[t3--]=t1;
	if(a.num[1]==0)
	{
		a=hf(a);
		b=c2(b);
	}
	else
	{
		a=c2(a);
		b=hf(b);
	}
	for(int i=a.len;i>=1;--i)printf("%d",(signed)a.num[i]);
	puts("");
	for(int i=b.len;i>=1;--i)printf("%d",(signed)b.num[i]);
	return 0;
}
2022/8/24 11:55
加载中...