有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}。对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。现在需要判断一个数列是否可以重排之后满足要求。
#include <iostream>
using namespace std;
int main() {
int t, n;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
int cnt4 = 0;
int cnt2 = 0;
int cnt1 = 0;
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
if (x % 4 == 0) cnt4++;
else if (x % 2 == 0) cnt2++;
else cnt1++;
}
if (cnt2 == 0)
{
if (cnt4 >= cnt1 - 1)
printf("Yes\n");
else
printf("No\n");
}
else
{
if (cnt4 >= cnt1)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}