关注
这题不用做的这么麻烦吧。直接计数就行了。能被1,2,4整除的数分别是多少再判断就行了。不过我的做法90%,不知道哪个case没过... #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstdint>
#include <vector>
#include <stack>
#include <algorithm>
#include <unordered_map>
#include <cmath>
#include <cstring>
#include <queue>
#include <set>
using namespace std;
#define MAX 100005
#define MOD 1000000007
#define LL long long int
int t, n;
LL nums[MAX];
//vector<int> a1, a2, a4;
int a1,a2,a4;
bool check(LL a, LL b){
return ((a * b) & 3) == 0;
}
int main()
{
#ifdef DEBUG
freopen("input.txt","r",stdin);
#endif
scanf("%d",&t);
while(t --){
scanf("%d",&n);
//a1.clear();
//a2.clear();
//a4.clear();
a1 = a4 = a2 =0;
for (int i =0;i< n;i++){
scanf("%lld",&nums[i]);
if (nums[i] %4 == 0)
a4++;
else if ( nums[i]%2 == 0)
a2 ++;
else
a1 ++;
}
if (n == 1){
printf("No\n");
continue;
}
if (a1-1 > a4 || (a1 > 0 && a4 == 0)){
printf("No\n");
continue;
}
if (a1 == 0 || a2 == 0){
printf("Yes\n");
continue;
}
if (a1 > a4){
printf("No\n");
continue;
}
printf("Yes\n");
/*
if ((a4< a1-1) || (a1 >0 && a4 == 0)){
printf("No\n");
continue;
}
if ((a2 >0) && a4 < a1 ) {
printf("No\n");
continue;
}*/
}
return 0;
}
查看原帖
点赞 3
相关推荐
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
988696次浏览 4968人参与
# 拿到offer之后,可以做些什么 #
121254次浏览 574人参与
# 27届实习投递记录 #
157601次浏览 1615人参与
# 秋招投递攻略 #
294900次浏览 2631人参与
# 我和mentor的爱恨情仇 #
120821次浏览 1032人参与
# 你觉得mentor喜欢什么样的实习生 #
63314次浏览 1073人参与
# 你的mentor是什么样的人? #
65947次浏览 834人参与
# 从mentor身上学到了__ #
66973次浏览 934人参与
# 万物皆可发面经 #
2462次浏览 33人参与
# 第一次找实习,我建议__ #
89221次浏览 905人参与
# 实习,不懂就问 #
225974次浏览 1740人参与
# 为了求职,我做过的疯狂伪装 #
90439次浏览 790人参与
# 你知道哪些职场黑话? #
92983次浏览 483人参与
# 多益网络工作体验 #
74891次浏览 318人参与
# 父母对你找工作是助力还是阻力? #
50745次浏览 435人参与
# 为了入行xx岗,我学了__ #
50921次浏览 409人参与
# 我的求职精神状态 #
474523次浏览 3141人参与
# 求职中的尴尬瞬间 #
42995次浏览 127人参与
# 你上一次给父母打电话是什么时候 #
46204次浏览 285人参与
# 除了Java,最推荐学什么技术? #
64787次浏览 410人参与
