There will be two arrays of integers. Determine all integers that satisfy the following two conditions:
- The elements of the first array are all factors of the integer being considered
- The integer being considered is a factor of all elements of the second array
These numbers are referred to as being between the two arrays. Determine how many such numbers exist.
Example
a = [2,6]
b=[24,36]
There are two numbers between the arrays:6 and 12.
6%2=0,6%6=0 ,24%6=0 and 36%6=0 for the first value.
12%2=0, 12%6=0 and 24%12=0,36%12=0 for the second value. Return .
Function Description
Complete the getTotalX function in the editor below. It should return the number of integers that are betwen the sets.
getTotalX has the following parameter(s):
- int a[n]: an array of integers
- int b[m]: an array of integers
Returns
- int: the number of integers that are between the sets
Input Format
The first line contains two space-separated integers,n and m, the number of elements in arrays and b.
The second line contains n distinct space-separated integers a[i] where 0<=i<n.
The third line contains m distinct space-separated integers b[j] where 0<=j<m.
Constraints
- 1<=n,m<=10
- 1<=a[i]<=100
- 1<=b[j]<=100
Sample Input
2 3 2 4 16 32 96
Sample Output
3
Explanation
2 and 4 divide evenly into 4, 8, 12 and 16.
4, 8 and 16 divide evenly into 16, 32, 96.
4, 8 and 16 are the only three numbers for which each element of a is a factor and each is a factor of all elements of b.
Between Two Sets HackerRank Solution in C
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int main(){
int n,i,min,max,j,c=0,f;
int m;
scanf("%d %d",&n,&m);
int *a = malloc(sizeof(int) * n);
for(int a_i = 0; a_i < n; a_i++){
scanf("%d",&a[a_i]);
}
int *b = malloc(sizeof(int) * m);
for(int b_i = 0; b_i < m; b_i++){
scanf("%d",&b[b_i]);
}
max=a[0];
for(i=0;i<n;i++)
{
if(a[i]>max)
max=a[i];
}
min=b[0];
for(i=0;i<m;i++)
{
if(b[i]<min)
min=b[i];
}
for(i=max;i<=min;i++)
{
f=0;
for(j=0;j<n;j++)
{
if(i%a[j]!=0)
{
f=1;
break;
}
}
if(f==0)
{
for(j=0;j<m;j++)
{
if(b[j]%i!=0)
{
f=1;
break;
}
}
}
if(f==0)
c++;
}
printf("%d",c);
return 0;
}
Between Two Sets HackerRank Solution in C++
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
int checkA(const vector<int>& a, int n, int k){
for (int i = 0; i < n; i++)
if (k % a[i])
return 0;
return 1;
}
int checkB(const vector<int>& b, int n, int k){
for (int i = 0; i < n; i++)
if (b[i] % k)
return 0;
return 1;
}
int main(){
int n;
int m;
cin >> n >> m;
vector<int> a(n);
for(int a_i = 0;a_i < n;a_i++){
cin >> a[a_i];
}
vector<int> b(m);
for(int b_i = 0;b_i < m;b_i++){
cin >> b[b_i];
}
int cnt = 0;
for (int i = 1; i <= 100; i++)
if (checkA(a, n, i) && checkB(b, m, i))
cnt++;
cout << cnt;
return 0;
}
Between Two Sets HackerRank Solution in Java
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
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();
}
int ans = 0;
for(int j=1;j<=100;j++)
{
boolean hh = true;
for(int bb : b)
{
if(bb%j!=0)
{
hh = false;
break;
}
}
if(hh)
{
for(int bb : a)
{
if(j%bb!=0)
{
hh = false;
break;
}
}
if(hh)
ans++;
}
}
System.out.println(ans);
}
}
Between Two Sets HackerRank Solution in Python
aa,bb=0,0 n,m=map(int,raw_input().split()) a=map(int,raw_input().split()) b=map(int,raw_input().split()) ct=0 for i in xrange(max(a),min(b)+1): for j in a: if i%j!=0: break else: for k in b: if k%i!=0: break else: ct+=1 print ct
Between Two Sets HackerRank Solution in C#
using System;
using System.Collections.Generic;
using System.Linq;
class Solution {
static void Main(String[] args) {
Console.ReadLine();
var A = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse).ToList();
var B = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse).ToList();
int c = 0;
for (int i = 1; i < 10000; i++) {
if (A.Any(x => i % x != 0)) continue;
if (B.Any(x => x % i != 0)) continue;
c++;
}
Console.WriteLine(c);
}
}
Attempt – Between Two Sets HackerRank Challenge
Link – https://www.hackerrank.com/challenges/between-two-sets
Next HackerRank Challenge Solution
Link – https://exploringbits.com/breaking-the-records-hackerrank-solution/
Aayush Kumar Gupta is the founder and creator of ExploringBits, a website dedicated to providing useful content for people passionate about Engineering and Technology. Aayush has completed his Bachelor of Technology (Computer Science & Engineering) from 2018-2022. From July 2022, Aayush has been working as a full-time Devops Engineer.