关注
这题不用做的这么麻烦吧。直接计数就行了。能被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
相关推荐
牛客热帖
更多
正在热议
更多
# 从顶到拉给所有面过的公司评分 #
13249次浏览 124人参与
# 机械人春招想让哪家公司来捞你? #
356873次浏览 3104人参与
# 为了求职,我做过的疯狂伪装 #
10396次浏览 171人参与
# 晒晒你的中秋福利 #
14721次浏览 91人参与
# 职场破冰,你们都聊什么? #
5940次浏览 58人参与
# 工作压力大怎么缓解 #
104737次浏览 1048人参与
# 机械人怎么评价今年的华为 #
208544次浏览 1524人参与
# bilibili求职进展汇总 #
84845次浏览 780人参与
# 广联达求职进展汇总 #
10651次浏览 50人参与
# 大家实习每天都在干啥 #
88663次浏览 517人参与
# 你面试被问到过哪些不会的问题? #
18603次浏览 731人参与
# 聊聊这家公司值得去吗 #
553393次浏览 3676人参与
# 秋招报数:你投了多少家公司? #
26286次浏览 266人参与
# 实习要如何选择和准备? #
114441次浏览 1436人参与
# 秋招OC许愿 #
345574次浏览 2523人参与
# 秋招的嫡长offer #
25614次浏览 247人参与
# 上班后和你想的一样吗? #
79124次浏览 630人参与
# 电网笔面经互助 #
46385次浏览 428人参与
# 你觉得早上几点上班合适? #
82272次浏览 329人参与
# 上班摸鱼,你都在干些什么? #
6013次浏览 103人参与