网易四的倍数
一开始卡在了Yes上,自己写成了YES,所以通过率为0。
然后就是题目本身,数据量很大,肯定不能全部存下来再操作(也没必要)。
希望最大化的利用能被四整除的和最小化奇数,能想到奇数放两边,但是一定要注意这时候分两种情况
1.没有仅能被2整除的
2.有仅能被2整除的
对于1,这个时候就是最大化4和最小化奇数的时候了,能被4整除的只要不小于奇数减一就好了
对于2,我们把仅能被二整除的放一边,让他自生自灭,这个时候就不能最大化的利用4了,因为有仅能被2整除的碍事,所以能被4整除的不能小于奇数的个数
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while(input.hasNext()){
int t = input.nextInt();
boolean[] res = new boolean[t];
for (int i = 0; i < t; i++) {
int n = input.nextInt();
int jiNumber = 0;
int can4Number = 0;
int can2Number = 0;
int temp = 0;
for (int j = 0; j < n; j++) {
temp = input.nextInt();
if (temp % 2 != 0) {
jiNumber++;
}else if (temp % 4 == 0) {
can4Number++;
}else if (temp % 4 != 0 && temp %2 == 0) {
can2Number++;
}
}
if (can2Number == 0) {
res[i] = !(can4Number < jiNumber -1);
}else{
res[i] = !(can4Number < jiNumber );
}
}
for (int i = 0; i < res.length; i++) {
System.out.println(res[i] ? "Yes" : "No");
}
}
}
}
(粘贴过来缩进有点问题)
#网易#
查看16道真题和解析