We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.

public static int getTotalX(List<int> a, List<int> b)
{
int total = 0;
int number = a.Max();
Enumerable.Range(number, b.Min())
.ToList()
.ForEach(n =>
{
if (a.All(e => number % e == 0 || e % number == 0)
&& b.All(e => number % e == 0 || e %number == 0))
total++;
number++;
});
return total;
}

I noticed that Your answer goes through way too many iterations and doesn't take large enough steps, there can be no correct answer between a.Max() and 2a.Max(), therefore skipping those is a good idea.

Looping through by generating an amount of integers also isnt really necessary, just start from lowest possible correct answer ( a.Max() ) and make sure youre not over the largest possible ( b.Min() ) correct answer.

Works like a charm :).

Here is the resulting code with comments.

public static int getTotalX(List<int> a, List<int> b)
{
/*Starting from 0 found, storing largest value in A and smallest value in b. Setting starting point to largest value in A.*/
int foundCount = 0, maxA = a.Max(), minB = b.Min(), current = maxA;
while (current <= minB)
{
/*If the current value is divisible by all members of both arrays, then it's the one we want.*/
if (a.All(e => current % e == 0 || e % current == 0) && b.All(e => current % e == 0 || e % current == 0))
foundCount++;
/*Iterate the value by largest member of divisors, no reason to take smaller steps.*/
current+= maxA;
};
return foundCount;
}

" C# " for everyone CTRL+F-ing.

//Stored a.Max() and b.Min() as dsgarg71 suggested below :).

How in the world did you know to use this to find the answer?

I would really like to know.

What did you study to know this? Nothing I have ever covered in C# would tell me to use something like this to come up with this answer, hell I couldn't even understand the frickin problem. I just don't get how peeps look at something and boom know what to apply and where...really discourages me.

## Between Two Sets

You are viewing a single comment's thread. Return to all comments →

The same logic in C#:

Hello!

I noticed that Your answer goes through way too many iterations and doesn't take large enough steps, there can be no correct answer between a.Max() and 2a.Max(), therefore skipping those is a good idea.

Looping through by generating an amount of integers also isnt really necessary, just start from lowest possible correct answer ( a.Max() ) and make sure youre not over the largest possible ( b.Min() ) correct answer.

Works like a charm :).

Here is the resulting code with comments.

" C# " for everyone CTRL+F-ing.

//Stored a.Max() and b.Min() as dsgarg71 suggested below :).

Very nice optimization! I really was not realized it. Thanks. :)

Thanks :). dsarg71 found another neat optimization. I've added that as well.

Wow It did the magic. Thanks

Thats n^3, Why not to store a.Max/b.Min and other such stuff once got so that their compute does not repeat.

You're right, the computation does indeed get repeated, I've changed the code accordingly. Good eye!

How in the world did you know to use this to find the answer?

I would really like to know.

What did you study to know this? Nothing I have ever covered in C# would tell me to use something like this to come up with this answer, hell I couldn't even understand the frickin problem. I just don't get how peeps look at something and boom know what to apply and where...really discourages me.

its all about mathematics people will learn eventually