您的位置:首页 > 其它

重排数列--是否存在排列,排列后数组的每两个相邻元素的乘积都是4的倍数

2017-09-09 19:07 337 查看
i从0到n-1,是否存在排列,使得a[i]*a[i+1]的值都是4的倍数

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
int m, n;
int[] arr;
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
for (int i = 0; i < m; i++) {
n = sc.nextInt();
arr = new int
;
//记录能被4整除的个数,能被2整除的个数以及奇数的个数
int c4 = 0, c2 = 0, c1 = 0;
for (int j = 0; j < n; j++) {
arr[j] = Integer.parseInt(sc.next());
if (arr[j] % 4 == 0) c4++;
else if (arr[j] % 2 == 0) c2++;
else c1++;
}//for j
if (c4 >= n / 2 || c4 >= c1) {//要么4的倍数的元素个数大于等于数组长度的一半(下取整),
//要么4的倍数的元素个数大于等于奇数元素的个数
System.out.println("yes");
} else
System.out.println("no");
}//for i
}//main
}

//4 //4组数
//4 //第一组4个元素
//3 3 4 4 //第一组的元素值
//yes //第一组的结果
//4 //第二组4个元素
//2 2 4 4
//yes
//5
//1 3 5 4 12
//yes
//4
//1 2 3 4
//no

//比如:1 3 5 4 12
//存在排列:1 4 3 12 5,这样1*4,4*3,3*12,12*5均是4的倍数
//比如:1 2 3 4
//不存在该排列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐