调试hackerrank周代码25:两组之间

时间:2016-11-02 03:29:51

标签: java arrays algorithm factors

我在hackerrank上有一个问题,如下所示。 我的答案是在这个问题描述之后,它在运行代码后显示确定,但是当我提交代码时,这个代码每6个测试用例只传递3个。我还是不知道我的错误在哪里。任何帮助将非常感激。感谢。

  

考虑两组正整数,A = {a0,a1,...,a(n-1)}和B = {b0,b1,...,b(m-1)}。我们说这是积极的   如果满足以下条件,则整数x在集合A和B之间   满足:

     

A中的所有元素都是x的因子。而x是B中所有元素的一个因子。   给定A和B,找到并打印整数的数量(即可能的' s)   介于两组之间。

     

输入格式

     

第一行包含两个以空格分隔的整数,用于描述   相应的n值(集合A中的元素数量)和m(   集合B)中的元素数量。第二行包含不同的   空格分隔的整数描述a0,a1,...,a(n-1)。第三行包含   描述b0,b1,...,b(m-1)的不同空格分隔整数。

     

约束

     

1 <= n,m <= 10

     

1&lt; = a(i)&lt; = 100

     

1&lt; = b(i)&lt; = 100

     

输出格式

     

打印被认为介于A和B之间的整数。

     

示例输入

     

2 3

     

2 4

     

16 32 96

     

示例输出

     

3

     

解释

     

A = {2,4}和B = {16,32,96}之间的整数分别为4,8和16。

我的代码:

public class Solution {
    public static boolean checkX_function(int Ax, int [] b){
        for(int i=0; i<b.length; i++){
            if(b[i]%Ax!=0){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(); // n: length of array A
        int m = in.nextInt(); // m: length of array B
        int[] a = new int[n];
        for(int a_i=0; a_i < n; a_i++){
            a[a_i] = in.nextInt();
        }
        int[] b = new int[m];
        for(int b_i=0; b_i < m; b_i++){
            b[b_i] = in.nextInt();
        }

        boolean checkX = false;
        int count=0;
        for(int i=0; i<n; i++){            
            for(int j=i; j<n; j++){
                int Ax = 0;
                Ax = a[i]*a[j];
                //check if Ax is satisfied for all elements in B
                checkX = checkX_function(Ax, b);
                if (checkX == true){
                    count++;
                }
            }
        }
        System.out.println(count);
    }
}

1 个答案:

答案 0 :(得分:0)

您好,我们编写了以下代码,并通过了所有测试用例。

Type.GetType