HackerRank Between Two Sets Problem Solution in C
#include <stdio.h>
long long gcd(long long a, long long b);
long long lcm(long long a, long long b);
int main()
{
long long a[10], b[10], n, m, i, lcm_a, gcd_b, between = 0;
scanf("%lld %lld\n", &n, &m);
for (i = 0; i < n; ++i)
scanf("%lld", &a[i]);
for (i = 0; i < m; ++i)
scanf("%lld", &b[i]);
lcm_a = a[0];
for (i = 1; i < n; ++i)
lcm_a = lcm(lcm_a, a[i]);
gcd_b = b[0];
for (i = 1; i < m; ++i)
gcd_b = gcd(gcd_b, b[i]);
if (gcd_b % lcm_a == 0)
for (i = lcm_a; i <= gcd_b; i += lcm_a)
if (gcd_b % i == 0) ++between;
printf("%lld", between);
return 0;
}
long long gcd(long long a, long long b)
{
long long t;
while (b)
{
t = b;
b = a % b;
a = t;
}
return a;
}
long long lcm(long long a, long long b)
{
return a / gcd(a,b) * b;
}
HackerRank Between Two Sets Problem Solution in JavaScript
process.stdin.resume();
process.stdin.setEncoding('ascii');
var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;
process.stdin.on('data', function (data) {
input_stdin += data;
});
process.stdin.on('end', function () {
input_stdin_array = input_stdin.split("\n");
main();
});
function readLine() {
return input_stdin_array[input_currentline++];
}
/////////////// ignore above this line ////////////////////
function main() {
var n_temp = readLine().split(' ');
var n = parseInt(n_temp[0]);
var m = parseInt(n_temp[1]);
a = readLine().split(' ');
a = a.map(Number);
b = readLine().split(' ');
b = b.map(Number);
var lcm = getLCM(a);
var gcd = getGCD(b);
var count = 0;
for(var i=lcm;i<=gcd;i+=lcm){
if(gcd%i===0){count++}
}
console.log(count);
}
function LCM(a,b){
return a*b/GCD(a,b)
}
function getLCM(a){
var result = a[0];
for(var i=1;i<a.length;i++){
result = LCM(result,a[i]);
}
return result;
}
function GCD(a,b){
var temp;
while(b>0){
temp = b;
b = a%b;
a = temp;
}
return a;
}
function getGCD(a){
var result = a[0];
for(var i=1;i<a.length;i++){
result = GCD(result,a[i]);
}
return result;
}
HackerRank Between Two Sets Problem Solution in Python
#!/bin/python3
import sys
n,m = input().strip().split(' ')
n,m = [int(n),int(m)]
a = [int(a_temp) for a_temp in input().strip().split(' ')]
b = [int(b_temp) for b_temp in input().strip().split(' ')]
a.sort()
b.sort()
lower_b = a[n - 1];
upper_b = b[0] + 1;
l = []
for i in range(upper_b - lower_b):
num = i + lower_b
flag = 1;
for j in range(n):
if(num % a[j] != 0):
flag = 0
break
for j in range(m):
if(b[j] % num != 0):
flag = 0
break
if(flag == 1):
l.append(num)
print(len(l))
0 Comments