-1
这里的问题陈述:CodeChef阵列变换计划
给定n个数字,你可以执行下列操作的任何数量的 时间:选择 号码,其中没有一个是0的任何子集。 递减通过 1子集中的号码,并增加数量并不 被K的子集可以 进行操作,从而使得除了其中一人所有 数字变成0? 输入:第一行包含 多的测试用例T. 2 * T线 后续,2对于每种情况。第一 线测试用例包含 数n和K.下一行 含有n个数,A_1 ... A_N。输出 :输出T行,每个测试用例对应 。对于测试用例,如果存在所述的 操作序列,则 输出“是”,否则输出“否” 。
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;
}
}
哪来的问题??? – maaartinus 2011-02-03 13:30:40