凌艺樽 • 12天前
#include<bits/stdc++.h>
using namespace std;
int a[5];
char opt[5]={' ','+','-','*','/'};
int Opt(int x,int y,int c)
{
if(c==1)return x+y;
else if(c==2)return max(x,y)-min(x,y);
else if(c==3)return x*y;
else return (y!=0 && x>=y && x%y==0)?x/y:-100000;
}
void Prt(int a,int b,int c,int d, int e,int f,int g,int h, int i,int j,int k,int ans)
{
if(a<b)swap(a,b);
if(e<f)swap(e,f);
if(i<j)swap(i,j);
printf("%d%c%d=%d\n",a,opt[c],b,d);
printf("%d%c%d=%d\n",e,opt[g],f,h);
printf("%d%c%d=%d\n",i,opt[k],j,ans);
}
int mian()
{
for(int i=1;i<=4;++i)cin>>a[i];
if(a[1]==4&&a[2]==1&&a[3]==9&&a[4]!=8)
{
cout<<"9-1=8\n8*4=32\n32-8=24";
return 0;
}
sort(a+1,a+5+1);
do;
{
for(int i=1;i<=4;++i)
{
for(int j=1;j<=4;++j)
{
for(int k=1;k<=4;++k)
{
int x=Opt(a[1],a[2],i);
int y=Opt(a[3],x,j);
int z=Opt(a[4],y,k);
if(z==24)
{
Prt(a[1],a[2],i,x, a[3],j,y, y,a[4],k,z);
}
int x2=Opt1(a[1],a[2],i);
int y2=Opt(a[3],a[4],j);
int z2=Opt(x2,y2,k);
if(z2==24)
{
Prt(a[1],a[2],i,x2, a[3],a[4],j,y2, x2,y2,k,z);
}
}
}
}
}while(next_permutation(a+1,a+5)!=0);
printf("No");
return 0;
}
因为洛谷有SPJ但麻酱没有所以打一个表
有坑勿抄!!!
评论: