编程题1

来源:互联网 发布:淘宝查看同行店铺数据 编辑:程序博客网 时间:2024/05/17 06:51

有一个长度为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;}


原创粉丝点击