记录编号 25195 评测结果 AAAAAAAAAA
题目名称 算24点 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2011-06-13 22:19:47 内存使用 0.26 MiB
显示代码纯文本
//#include <iostream>
#include <fstream>
#include <cmath>
//#include <iomanip>//<<setiosflags(ios::fixed)<<setprecision(user set)<<
using namespace std;

ifstream input("point24.in");
ofstream output("point24.out");

int inf[4],ans[3];
char mar[3];

int findmax(int x,int y)
{
	if (x>=y)
		return(x);
	else
		return(y);
}

int findmin(int x,int y)
{
	if (y>=x)
		return(x);
	else
		return(y);
}

int main(void)
{
	int i,j,k,l,m1,m2,m3;
	input>>inf[0]>>inf[1]>>inf[2]>>inf[3]>>inf[4];
	for (i=0;i<=3;i++) for (j=0;j<=3;j++) if (j!=i&&inf[j]<=inf[i]) for (k=0;k<=3;k++) if (k!=i&&k!=j) for (l=0;l<=3;l++) if (l!=i&&l!=j&&l!=k)
	{
		for (m1=1;m1<=4;m1++)
		{
			if (m1==1)
			{
				ans[0]=inf[i]+inf[j];
				mar[0]='+';
			}
			if (m1==2)
			{
				if (inf[i]>inf[j])
				{
					ans[0]=inf[i]-inf[j];
					mar[0]='-';
				}
				else
					continue;
			}
			if (m1==3)
			{
				ans[0]=inf[i]*inf[j];
				mar[0]='*';
			}
			if (m1==4)
			{
				if (inf[i]%inf[j]==0)
				{
					ans[0]=inf[i]/inf[j];
					mar[0]='/';
				}
				else
					continue;
			}
			for (m2=1;m2<=4;m2++)
			{
				if (m2==1)
				{
					ans[1]=ans[0]+inf[k];
					mar[1]='+';
				}
				if (m2==2)
				{
					if (ans[0]!=inf[k])
					{
						ans[1]=abs(ans[0]-inf[k]);
						mar[1]='-';
					}
					else
						continue;
				}
				if (m2==3)
				{
					ans[1]=ans[0]*inf[k];
					mar[1]='*';
				}
				if (m2==4)
				{
					if (ans[0]%inf[k]==0||inf[k]%ans[0]==0)
					{
						if (ans[0]%inf[k]==0)
							ans[1]=ans[0]/inf[k];
						if (inf[k]%ans[0]==0)
							ans[1]=inf[k]/ans[0];
						mar[1]='/';
					}
					else
						continue;
				}
				for (m3=1;m3<=4;m3++)
				{
					if (m3==1)
					{
						ans[2]=ans[1]+inf[l];
						mar[2]='+';
					}
					if (m3==2)
					{
						if (ans[1]!=inf[l])
						{
							ans[2]=abs(ans[1]-inf[l]);
							mar[2]='-';
						}
						else
							continue;
					}
					if (m3==3)
					{
						ans[2]=ans[1]*inf[l];
						mar[2]='*';
					}
					if (m3==4)
					{
						if (ans[1]%inf[l]==0||inf[l]%ans[1]==0)
						{
							if (ans[1]%inf[l]==0)
								ans[2]=ans[1]/inf[k];
							if (inf[l]%ans[1]==0)
								ans[2]=inf[k]/ans[1];
							mar[2]='/';
						}
						else
							continue;
					}
					if (ans[2]==24)
					{
						output<<inf[i]<<mar[0]<<inf[j]<<'='<<ans[0]<<endl;
						output<<findmax(ans[0],inf[k])<<mar[1]<<findmin(ans[0],inf[k])<<'='<<ans[1]<<endl;
						output<<findmax(ans[1],inf[l])<<mar[2]<<findmin(ans[1],inf[l])<<'='<<"24\n";
						input.close();
						output.close();
						return(0);
					}
				}
			}
		}
	}
	output<<"No answer!\n";
	input.close();
	output.close();
	return(0);
}