//判断4个数能否组成24点 #include <stdio.h> #include <math.h> int n; int t; double a[20]; int cnt; double stack[100]; int stack_top; void play(int num){ if(num>n){ if(stack_top==1){ if(fabs(stack[0]-24.0)<1e-7){ cnt=1; return ; } } else{ double t2=stack[--stack_top]; double t1=stack[--stack_top]; stack[stack_top++]=t1+t2; play(num); --stack_top; stack[stack_top++]=t1-t2; play(num); --stack_top; stack[stack_top++]=t1*t2; play(num); --stack_top; stack[stack_top++]=t1/t2; play(num); --stack_top; stack[stack_top++]=t1; stack[stack_top++]=t2; } return ; } stack[stack_top++]=a[num]; play(num+1); --stack_top; if(stack_top>=2){ double t2=stack[--stack_top]; double t1=stack[--stack_top]; stack[stack_top++]=t1+t2; play(num); --stack_top; stack[stack_top++]=t1-t2; play(num); --stack_top; stack[stack_top++]=t1*t2; play(num); --stack_top; stack[stack_top++]=t1/t2; play(num); --stack_top; stack[stack_top++]=t1; stack[stack_top++]=t2; } } int main(){ scanf("%d %d",&n,&t); while(t--){ for(int i=1;i<=n;++i) scanf("%lf",a+i); cnt=0; stack_top=0; play(1); if(cnt){ puts("可以组成"); } else { puts("不可以组成"); } } return 0; }