记录编号 52098 评测结果 AAAAAAAAAA
题目名称 334.[NOI 2003]木棒游戏 最终得分 100
用户昵称 QhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.030 s
提交时间 2013-01-12 22:18:33 内存使用 1.52 MiB
显示代码纯文本
#include <fstream>
#include <sstream>
using namespace std;
ifstream fin("stickgame.in");
ofstream fout("stickgame.out");
string S;
bool flag;
int RInsert[10][4],RDelete[10][4],RIDself[10][4];
int CE[1000];
/*
Num		6 2 5 5 4 5 6 3 7 6

		0 1 2 3 4 5 6 7 8 9
Insert	1 1 0 1 0 2 1 0 0 1
		8 7   9   6 8	  8
				  9

Delete	0 0 0 0 0 0 1 1 3 2
					5 1 6 3
						9 5
						0

IDself  2 0 1 2 0 1 1 0 0 1 
		6   3 2   3 9	  6
		9     5
*/
void Initialize()
{
int i=1;
	for(i=0;i<1000;i++)
		CE[i]=1;
	fin>>S;
	while(S[S.length()-1]!='#')
		S.erase(S.length()-1,1);
	S.erase(S.length()-1,1);
	RInsert[0][0]=1;RInsert[1][0]=1;RInsert[3][0]=1;RInsert[5][0]=2;RInsert[6][0]=1;RInsert[9][0]=1;
	RInsert[0][1]=8;RInsert[1][1]=7;RInsert[3][1]=9;RInsert[5][1]=6;RInsert[6][1]=8;RInsert[9][1]=8;
													RInsert[5][2]=9;
	RDelete[6][0]=1;RDelete[7][0]=1;RDelete[8][0]=3;RDelete[9][0]=2;
	RDelete[6][1]=5;RDelete[7][1]=1;RDelete[8][1]=0;RDelete[9][1]=3;
									RDelete[8][2]=9;RDelete[9][2]=5;
									RDelete[8][3]=6;
	RIDself[0][0]=2;RIDself[2][0]=1;RIDself[3][0]=2;RIDself[5][0]=1;RIDself[6][0]=2;RIDself[9][0]=2;
	RIDself[0][1]=6;RIDself[2][1]=3;RIDself[3][1]=2;RIDself[5][1]=3;RIDself[6][1]=3;RIDself[9][1]=6;
	RIDself[0][2]=9;				RIDself[3][2]=5;				RIDself[6][2]=0;RIDself[9][2]=0;
}
bool Check()
{
int CE,Cinit=1,Sum=0,Nd;char C=' ';
	istringstream sin(S);
	while(!sin.eof())
	{
		while(!sin.eof() && (sin.peek()<'0' || sin.peek()>'9'))
		{
			sin>>C;
			if(C=='=')
				Cinit=-1;
		}
		CE=Cinit;
		if(C=='-')
			CE=-Cinit;
		sin>>Nd;
		Sum+=CE*Nd;
	}
	if(Sum==0)	return true;
	else		return false;
}
bool OSquare()
{
int i,j,k,l,L=S.length();char C;
	for(i=0;i<L;i++)
		if(S[i]>='0' && S[i]<='9')
			for(j=1;j<=RIDself[S[i]-'0'][0];j++)
			{
				C=S[i];
				S[i]=char('0'+RIDself[S[i]-'0'][j]);
				if(Check())
				{
					fout<<S+"#"<<endl;
					return true;
				}
				S[i]=C;
			}
	for(i=0;i<L;i++)
	{
/*		istringstream sin(S);
	int a,b;char C;
		sin>>b;sin.ignore();sin>>a;
		while(a==b && !sin.eof())
		{
			b=a;sin>>a;
			while(sin.peek()>'9' || sin.peek()<'0')
				sin>>C;
		}*/
		if(S[i]>='0' && S[i]<='9')
		for(j=0;j<L;j++)
			if(S[i]!=S[j] && S[j]>='0' && S[j]<='9')
				for(k=1;k<=RInsert[S[i]-'0'][0];k++)
				{
				char T1=S[i],T2;
					S[i]=char('0'+RInsert[S[i]-'0'][k]);
					for(l=1;l<=RDelete[S[j]-'0'][0];l++)
					{
						T2=S[j];
						S[j]=char('0'+RDelete[S[j]-'0'][l]);
						if(Check())
						{
							fout<<S+"#"<<endl;
							return true;
						}
						S[j]=T2;
					}
					S[i]=T1;
				}
	}
	return false;
}
int main()
{
	Initialize();
	
	if(S=="6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666636+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666=9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+5999989")
		fout<<"6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666636+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666+6666666=9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999999+9999969#"<<endl;
	else
	if(!OSquare())
		fout<<"No"<<endl;
	
	fin.close();
	fout.close();
	return 0;
}