史杉求條
  • 板块灌水区
  • 楼主zeroflows
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/10/16 21:21
  • 上次更新2024/10/16 21:36:07
查看原帖
史杉求條
699348
zeroflows楼主2024/10/16 21:21

真是史杉P1236


wa的点

9 7 5 7
9-7=2
7+5=12
12*2=24

代码

#include<bits/stdc++.h>
using namespace std;
struct no
{
	int a,c;
	char b;
	int d;
}hh[10];
int h[5];
int v[5];
int qww=0;
void qq(int x,int y)
{
	if(x==1)
	{
		for(int i=1;i<=4;i++)
		{
			for(int j=i+1;j<=4;j++)
			{
				v[i]=v[j]=1;
				qq(x+1,h[i]+h[j]);
				if(qww==1)
				{
					hh[1].a=h[i];
					hh[1].b='+';
					hh[1].c=h[j];
					hh[1].d=h[i]+h[j];
					return;
				}
				qq(x+1,h[i]-h[j]);
				if(qww==1)
				{
					hh[1].a=h[i];
					hh[1].b='-';
					hh[1].c=h[j];
					hh[1].d=h[i]-h[j];
					return;
				}
				qq(x+1,h[j]-h[i]);
				if(qww==1)
				{
					hh[1].c=h[i];
					hh[1].b='-';
					hh[1].a=h[j];
					hh[1].d=h[j]-h[i];
					return;
				}
				qq(x+1,h[i]*h[j]);
				if(qww==1)
				{
					hh[1].a=h[i];
					hh[1].b='*';
					hh[1].c=h[j];
					hh[1].d=h[i]*h[j];
					return;
				}
				if(h[i]!=0&&h[j]%h[i]==0)
				{
					qq(x+1,h[j]/h[i]);
					if(qww==1)
					{
						hh[1].c=h[i];
						hh[1].b='/';
						hh[1].a=h[j];
						hh[1].d=h[j]/h[i];
						return;
					}
				}
				if(h[j]!=0&&h[i]%h[j]==0)
				{
					qq(x+1,h[i]/h[j]);
					if(qww==1)
					{
						hh[1].a=h[i];
						hh[1].b='/';
						hh[1].c=h[j];
						hh[1].d=h[i]/h[j];
						return;
					}
				}
				v[i]=v[j]=0;
			}
		}
	}
	else
	if(x==2)
	{
		for(int i=1;i<=4;i++)
		{
			if(v[i])
			continue;
			v[i]=1;
			qq(x+1,h[i]+y);
			if(qww==1)
			{
				hh[2].a=h[i];
				hh[2].b='+';
				hh[2].c=y;
				hh[2].d=h[i]+y;
				return;
			}
			qq(x+1,h[i]-y);
			if(qww==1)
			{
				hh[2].a=h[i];
				hh[2].b='-';
				hh[2].c=y;
				hh[2].d=h[i]-y;
				return;
			}
			qq(x+1,y-h[i]);
			if(qww==1)
			{
				hh[2].c=h[i];
				hh[2].b='-';
				hh[2].a=y;
				hh[2].d=y-h[i];
				return;
			}
			qq(x+1,h[i]*y);
			if(qww==1)
			{
				hh[2].a=h[i];
				hh[2].b='*';
				hh[2].c=y;
				hh[2].d=h[i]*y;
				return;
			}
			if(h[i]!=0&&y%h[i]==0)
			{
				qq(x+1,y/h[i]);
				if(qww==1)
				{
					hh[2].a=y;
					hh[2].b='/';
					hh[2].c=h[i];
					hh[2].d=y/h[i];
					return;
				}
			}
			if(y!=0&&h[i]%y==0)
			{
				qq(x+1,h[i]/y);
				if(qww==1)
				{
					hh[2].a=h[i];
					hh[2].b='/';
					hh[2].c=y;
					hh[2].d=h[i]/y;
					return;
				}
			}
			v[i]=0;
		}
	}
	else
	{
		int qw=0;
		for(int i=1;i<=4;i++)
		{
			if(v[i]==0)
			{
				qw=h[i];
				break;
			}
		}
		cout<<y<<" "<<qw<<endl;
		if(y+qw==24)
		{
			qww=1;
			hh[3].a=y;
			hh[3].b='+';
			hh[3].c=qw;
			hh[3].d=qw+y;
		}
		else
		if(y*qw==24)
		{
			qww=1;
			hh[3].a=y;
			hh[3].b='*';
			hh[3].c=qw;
			hh[3].d=qw*y;
		}
		else
		if(y-qw==24)
		{
			qww=1;
			hh[3].a=y;
			hh[3].b='-';
			hh[3].c=qw;
			hh[3].d=y-qw;
		}
		else
		if(qw-y==24&&qw-y>0)
		{
			qww=1;
			hh[3].a=qw;
			hh[3].b='-';
			hh[3].c=y;
			hh[3].d=qw-y;
		}
		else
		if(y!=0&&qw%y==0&&qw/y==24)
		{
			qww=1;
			hh[3].a=qw;
			hh[3].b='/';
			hh[3].c=y;
			hh[3].d=qw/y;
		}
		else
		if(qw!=0&&y%qw==0&&y/qw==24)
		{
			qww=1;
			hh[3].a=y;
			hh[3].b='/';
			hh[3].c=qw;
			hh[3].d=y/qw;
		}
		return;
	}
}
main()
{
	ios::sync_with_stdio(false);
	cin.tie(),cout.tie();
	for(int i=1;i<=4;i++)
	cin>>h[i];
	qq(1,0);
	if(qww==0)
	{
		cout<<"No answer!";
		return 0;
	}
	for(int i=1;i<=3;i++)
	{
		cout<<hh[i].a<<hh[i].b<<hh[i].c<<"="<<hh[i].d<<endl;
	}
}
2024/10/16 21:21
加载中...