题目要求:
给定一个长度为 n 的正整数序列 {a1,a2,…,an}。你可以先对序列进行任意重排,然后进行恰好 n−1 次运算,运算符从 {+,−,×,÷} 中任选。所有运算等优先级、严格按照从左到右的顺序结合。设二元运算
f(x,y)∈{x+y,x−y, x×y, x÷y},
记
f(1)=f(a1,a2),f(k)=f(f(k−1),ak+1) (2≤k≤n−1)。
你的任务是判断是否存在一种重排与运算选择,使得最终结果 f(n−1)=24。中间量与最终结果均为整数,允许出现 0 与负数。
运算规则补充(取整说明)
等优先级、严格左结合;
除法 ÷ 为 “抛弃小数部分的取整”(向零取整)的整数除法:x÷y=trunc(x/y),即舍去小数部分;例如trunc(7/3)=2, trunc(−7/3)=−2, trunc(7/−3)=−2, trunc((−7)/(−3))=2;若 y∣x,则 trunc(x/y)=x/y;
必须使用全部 n 个数,恰好进行 n−1 次运算;
允许对初始序列进行任意重排。
每个测试文件均包含多组测试数据。第一行输入一个整数 T (1≤T≤10) 代表多组数据,每组测试数据描述如下:
第一行输入一个整数 n (1≤n≤6) 表示序列 a 的长度;
第二行输入 n 个正整数 a1,a2,…,an (1≤ai≤13) 表示序列 a。
对于每组测试数据,若可得到 24,输出 Yes;否则输出 No。
输入
2
4
10 7 5 2
3
1 1 1
输出
Yes
No
说明
第一组:取重排 (10,7,5,2) 并依次选择加法,得到 (((10+7)+5)+2)=24,因此为 Yes。