CodeChef数组转换程序

时间:2011-02-03 13:27:10

标签: java

这是问题陈述:

  
    

给定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;
    }
}

1 个答案:

答案 0 :(得分:3)

if (m[0] != mod && m[1] != mod)

此处代替&&应该有||。只有m中的一个需要匹配mod。