优客文库提供全面的范文格式和文档模板,包括申请书、合同、借据、证明、求职信等,助力您快速撰写专业文档。

用java语言实现以下功能,小红拿到一个数组,她每次操作可以选择两个元素,将它们变成它们的平均数(当且仅当这两个元素的平均数为整数时才可操作)。小红想知道,自己能否通过一次操作,使得所有元素的乘积为偶

来自 安徽省合肥市 的网友 时间: 热度:°C 加入收藏 我要投稿 点赞()
以下是使用Java语言实现该功能的代码:

```java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt(); // 询问次数

for (int i = 0; i < t; i++) {
int n = scanner.nextInt(); // 数组元素个数
int[] arr = new int[n]; // 数组

for (int j = 0; j < n; j++) {
arr[j] = scanner.nextInt();
}

boolean canMakeProductEven = canMakeProductEven(arr);
System.out.println(canMakeProductEven ? "YES" : "NO");
}
}

// 判断是否可以通过一次操作使得所有元素的乘积为偶数
private static boolean canMakeProductEven(int[] arr) {
int oddCount = 0; // 奇数个数
int evenCount = 0; // 偶数个数

for (int num : arr) {
if (num % 2 == 0) {
evenCount++;
} else {
oddCount++;
}
}

// 如果数组中有偶数,则一次操作即可使得所有元素的乘积为偶数
if (evenCount > 0) {
return true;
}

// 如果数组中只有奇数个数大于等于2,则一次操作即可使得所有元素的乘积为偶数
if (oddCount >= 2) {
return true;
}

return false;
}
}
```

输入示例:
```
2
4
1 2 3 4
3
1 3 5
```

输出示例:
```
YES
NO
```

解释:
- 第一组询问中,数组为 [1, 2, 3, 4],可以选择将 1 和 3 变成它们的平均数 2,得到数组 [2, 2, 2, 4],所有元素的乘积为偶数,所以输出 YES。
- 第二组询问中,数组为 [1, 3, 5],无法通过一次操作使得所有元素的乘积为偶数,所以输出 NO。
221381
领取福利

微信扫码领取福利

微信扫码分享