代码
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
double a[5];
int Dfs(int k){
if(k==1){
if(fabs(a[0]-24)<1e-6){
return 1;
}else {
return 0;
}
}else{
double x,y;
for(int i=0;i<k;i++){
for(int j=i+1;j<k;j++){
x=a[i];y=a[j];
a[j]=a[k-1];
for(int z=1;z<=6;z++){
if(z==1){
a[i]=x+y;
if(Dfs(k-1)) return 1;
}else if(z==2){
a[i]=x-y;
if(Dfs(k-1)) return 1;
}else if(z==3){
a[i]=y-x;
if(Dfs(k-1)) return 1;
}else if(z==4){
a[i]=x*y;
if(Dfs(k-1)) return 1;
}else if(z==5){
if(fabs(y)>=1e-6){
a[i]=x/y;
if(Dfs(k-1)) return 1;
}
}else if(z==6){
if(fabs(x)>=1e-6){
a[i]=y/x;
if(Dfs(k-1))return 1;
}
}
}
a[i]=x;a[j]=y;
}
}
}
return 0;
}
int main(){
memset(a,0,sizeof a);
while(scanf("%lf%lf%lf%lf",&a[0],&a[1],&a[2],&a[3])!=EOF){
if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0){
return 0;
}
int f=Dfs(4);
if(f)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
memset(a,0,sizeof a);
}
}