题目
#include <cstdio>
#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;
double a[5];
bool f[5];
const double p=0.000001;
bool dfs(int x)
{
if(x==4)
{
for(int i=1;i<=4;i++)
if(!f[i]&&fabs(a[i]-24.0)<p)
return true;
return false;
}
for(int i=1;i<=4;i++){
if(!f[i])
for(int j=i+1;j<=4;j++)
if(!f[j]){
f[j] = true;
double t1=a[i],t2=a[j];
a[i]=t1+t2;
if(dfs(x+1)) return true;
a[i]=t1-t2;
if(dfs(x+1)) return true;
a[i]=t2-t1;
if(dfs(x+1)) return true;
a[i]=t1*t2;
if(dfs(x+1)) return true;
a[i]=t1/t2;
if(dfs(x+1)) return true;
a[i]=t2/t1;
if(dfs(x+1)) return true;
a[i]=t1;
f[j]=false;
}
}
return false;
}
int main()
{
while(1)
{
int k=0;
memset(f,0,sizeof(f));
for(int i=1;i<=4;i++)
{
scanf("%lf",&a[i]);
if(a[i]!=0) k=1;
}
if(k==0) return 0;
if(dfs(1)==1) printf("YES
");
else printf("NO
");
}
return 0;
}