20200416(AB) 题解 by 马鸿儒

A题:马鸿儒

题解:

#include <bits/stdc++.h>
using namespace std;
int a[10005],b[10005],n,c[10005];
void dfs(int* a,int* b,int cnt)
{
	if(cnt==n+1)
	{
		int pos,fff=0;
		for(int i=300;i>=0;i--) if(a[i])
		{
			pos=i;
			break;
		}
		if(a[pos]==-1) fff=1;
		cout<<pos<<"\n";
		for(int i=0;i<=pos;i++) if(fff) cout<<-a[i]<<" "; else cout<<a[i]<<" ";
		cout<<"\n";
		fff=0;
		for(int i=300;i>=0;i--) if(b[i]) 
		{
			pos=i;
			break;
		}
		cout<<pos<<"\n";
		if(b[pos]==-1) fff=1;
		for(int i=0;i<=pos;i++) if(fff) cout<<-b[i]<<" "; else cout<<b[i]<<" ";
	}
	else
	{
		int ff=0;
		for(int i=0;i<=1005;i++) c[i]=0;
		for(int i=0;i<=1005;i++) if(a[i]!=0) c[i+1]=a[i];
		for(int i=0;i<=1005;i++) 
		{
			c[i]+=b[i];
			if(abs(c[i])>1) ff=1,c[i]=0;
		}
		if(ff) for(int i=0;i<=1005;i++) c[i]=-c[i];
		for(int i=0;i<=1005;i++) b[i]=a[i];
		for(int i=0;i<=1005;i++) a[i]=c[i];
		dfs(a,b,cnt+1);
	}
}
int main()
{
	cin>>n;
	a[0]=1,b[0]=0;
	dfs(a,b,1);	
} 
//模拟

  

posted @ 2020-05-20 09:45  浪在ACM  阅读(119)  评论(0编辑  收藏  举报