【网易】重排数列
来源:互联网 发布:html 文字游戏源码 编辑:程序博客网 时间:2024/06/07 18:21
题目描述
小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]…, A[N]}。
牛博士给小易出了一个难题:
对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。
小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。
输入描述
输入的第一行为数列的个数t(1 ≤ t ≤ 10),
接下来每两行描述一个数列A,第一行为数列长度n(1 ≤ n ≤ 10^5)
第二行为n个正整数A[i](1 ≤ A[i] ≤ 10^9)
输出描述
对于每个数列输出一行表示是否可以满足牛博士要求,如果可以输出Yes,否则输出No。
测试用例
input:231 10 10041 2 3 4output:YesNo
解题思路
如果不存在不能被4整除的偶数,那么只要4个倍数的数个数大于奇数的个数就行。
否则4个倍数个数等于奇数的个数。
代码
#include <iostream>#include <vector>using namespace std;void func(vector<int> &v){ bool flag = false; int odd_num = 0; int four_num = 0; for (int i = 0;i < v.size();i++) { if(v[i] % 2 != 0) odd_num++; else { if (v[i] % 2 == 0 && v[i] % 4 != 0 ) flag = true; if (v[i] % 4 == 0) four_num++; } } if (!flag){ if (four_num >= odd_num - 1) cout << "Yes"<<endl; else cout <<"No"<<endl; }else{ if (four_num >= odd_num) cout << "Yes"<<endl; else cout << "No"<<endl; }}int main(){ int n, m; cin >> n; while(n--){ cin >> m; vector<int> v; while (m--){ int temp; cin >> temp; v.push_back(temp); } func(v); } return 0;
阅读全文
0 0
- 【网易】重排数列
- 2018网易笔试编程题----重排数列
- 2018网易笔试编程题----重排数列
- 网易2018校招 重排数列
- 网易2018校园招聘:重排数列 [python]
- 网易秋招2018笔试题 重排数列
- 网易2018校园招聘编程真题之重排数列
- 网易校招(字符碎片和重排数列)
- 重排数列
- 重排数列
- 网易2018年校园招聘编程题真题(魔法币&&相反数&&字符串碎片&&重排数列)
- [编程题] 重排数列
- 网易 Fibonacci数列
- 网易Fibonacci数列
- 网易笔试:Fibonacci数列
- 数列还原-网易python
- 网易—Fibonacci数列
- 网易编程题:数列还原
- 使用无线数传 radio telemetry 连接pixhawk进入offboard模式进行mavlink协议通讯的尝试
- 深入理解mysql
- 洛谷3366 最小生成树模板题
- 蓝桥杯 算法训练 删除数组零元素
- 文章标题
- 【网易】重排数列
- Yarn 资源管理
- Vim 查找&替换
- 安卓自定义控件---安卓小机器人图标在背景图片上随手指滑动,点击背景图片任意位置出现小机器人图标
- 在vue中引用公共过滤器filter
- 禁止访问磁盘的注册表
- Zookeeper Watcher核心机制·安全认证(ACL)·实际应用
- JZOJ 5444. 【NOIP2017提高A组冲刺11.2】救赎
- DAY007