这是问题陈述:
给定n个数字,您可以执行以下任何数量的操作 times:选择任何子集 数字,均不为0。 减少子集中的数字 1,并增加不在的数字 K的子集。是否可能 执行所有操作 数字除了其中一个变为0? 输入:第一行包含 测试案例数量为T. 2 * T行 关注,每个案例2。首先 测试用例的行包含 数字n和K.下一行 包含n个数字,a_1 ... a_n。产量 :输出T行,一行对应 每个测试用例。对于测试用例, 如果有序列,则输出“YES” 所描述的操作和“否” 除此以外。
Sample Input :
3
2 1
10 10
3 2
1 2 2
3 2
1 2 3
Sample Output :
YES
YES
NO
Constraints :
1 <= T <= 1000
2 <= n <= 100
1 <= K <= 10
0 <= a_i <= 1000
&安培;这是我的代码:
import java.util.*;
public class ArrayTransform {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int no_of_tests = sc.nextInt();
int size;
int a[] = new int[100];
boolean yes;
int j;
int k;
for (int i = 0; i < no_of_tests; i++) {
size = sc.nextInt();
k = sc.nextInt();
for (j = 0; j < size; j++) {
a[j] = sc.nextInt();
}
yes = is_possible(a, size, k + 1);
if (yes)
System.out.println("YES\n");
else
System.out.println("NO\n");
}
}
static boolean is_possible(int a[], int size, int k_1) {
int count = 0;
int m[] = { -1, -1 };
int mod;
for (int i = 0; i < size; i++) {
mod = a[i] % k_1;
if (m[0] != mod && m[1] != mod) {
if (m[0] == -1)
m[0] = mod;
else if (m[1] == -1)
m[1] = mod;
else
return false;
}
}
return true;
}
}
答案 0 :(得分:3)
if (m[0] != mod && m[1] != mod)
此处代替&&
应该有||
。只有m
中的一个需要匹配mod。