网易四的倍数
一开始卡在了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"); } } } }
(粘贴过来缩进有点问题)
#网易#