我在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);
}
}
答案 0 :(得分:0)
您好,我们编写了以下代码,并通过了所有测试用例。
Type.GetType