Problem C.简单的24点
题目描述
输入为4个数字,a,b,c,d。若abcd=24,则称该数组满足24点,其中可以为+、-、*、/任一个,若不能得到结果24,则称该数组不满足24点。(计算为实型)
输入:
第一行为测试组数t
接下来t行,每一行为四个整数a,b,c,d,测试是否满足24点
1<=a,b,c,d<10000(右区间忘了,反正四个数不为0)
输出
在每一行
若满足,输出YES
不满足,输出NO
import java.util.Scanner;
/*
Problem C.简单的24点
**题目描述**
输入为4个数字,a,b,c,d。若a^b^c^d=24,则称该数组满足24点,其中^可以为+、-、*、/任一个,若不能得到结果24,则称该数组不满足24点。(计算为实型)
**输入:**
第一行为测试组数t
接下来t行,每一行为四个整数a,b,c,d,测试是否满足24点
1<=a,b,c,d<10000(右区间忘了,反正四个数不为0)
**输出**
在每一行
若满足,输出YES
不满足,输出NO
*/
public class Test{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
int n = scanner.nextInt();
for(int i = 0; i < n; i++) {
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
int d = scanner.nextInt();
boolean flag = false;
while(true) {
if((a+b-c*d) == 24) flag = true;
if(d != 0 && (a+b-c/d) == 24) flag = true;
if(d != 0 && (a+b*c/d) == 24) flag = true;
if((a+b*c-d) == 24) flag = true;
if(c != 0 && (a+b/c*d) == 24) flag = true;
if(c != 0 && (a+b/c-d) == 24) flag = true;
if((a-b+c*d) == 24) flag = true;
if(d != 0 && (a-b+c/d) == 24) flag = true;
if(d != 0 && (a-b*c/d) == 24) flag = true;
if((a-b*c+d) == 24) flag = true;
if(c != 0 && (a-b/c*d) == 24) flag = true;
if(c != 0 && (a-b/c+d) == 24) flag = true;
if((a*b-c+d) == 24) flag = true;
if(d != 0 && (a*b-c/d) == 24) flag = true;
if(d != 0 && (a*b+c/d) == 24) flag = true;
if((a*b+c-d) == 24) flag = true;
if(c != 0 && (a*b/c+d) == 24) flag = true;
if(c != 0 && (a*b/c-d) == 24) flag = true;
if(b != 0 && (a/b-c*d) == 24) flag = true;
if(b != 0 && (a/b-c+d) == 24) flag = true;
if(b != 0 && (a/b*c+d) == 24) flag = true;
if(b != 0 && (a/b*c-d) == 24) flag = true;
if(b != 0 && (a/b+c*d) == 24) flag = true;
if(b != 0 && (a/b+c-d) == 24) flag = true;
break;
}
if(flag) System.out.println("YES");
else System.out.println("NO");
}
}
}
}