分析如下:
A 不是2的倍数,在两侧则需要一个4的倍数,在中间则需要两个4的倍数
B 是2的倍数不是4的倍数,可以随意连接,即任意个2的倍数不影响结果,考虑只有一个2的倍数的特殊情况
C 是4的倍数,无论放在哪里皆可
那么:
只需要 A 的个数小于等于C的个数那么就可以
特殊情况如下:只有一个B的时候,没有C,不能构成
只有 A 和 C , A的数目比C小1 , 也可以
以下代码未考虑特殊情况,需修正
#coding = utf-8
import sysdef countc(nn):
c0 = 0
c1 = 0
c2 = 0
for i in range(len(nn)):
t = int(nn[i])
if t % 4 == 0:
c2 += 1
continue
else:
if t % 2 == 0:
c1 += 1
continue
else:
c0 += 1
continue
return c0,c1,c2
if __name__ == "__main__":
n = int(raw_input().strip())
y = 'Yes'
no = 'No'
ans = []
for i in range(n):
c0 = 0
c1 = 0
c2 = 0
nn = n = int(raw_input().strip())
line = raw_input().strip().split()
c0,c1,c2 = countc(line)
if c0 <= c2:
ans.append(y)
else:
ans.append(no)
for i in ans:
print i