freeCodeCamp/curriculum/challenges/english/10-coding-interview-prep/project-euler/problem-186-connectedness-o...

1.7 KiB

id title challengeType forumTopicId dashedName
5900f4281000cf542c50ff39 Problem 186: Connectedness of a network 5 301822 problem-186-connectedness-of-a-network

--description--

Here are the records from a busy telephone system with one million users:

RecNr Caller Called
1 200007 100053
2 600183 500439
3 600863 701497
... ... ...

The telephone number of the caller and the called number in record n are Caller(n) = S_{2n - 1} and Called(n) = S_{2n} where {S}_{1,2,3,\ldots} come from the "Lagged Fibonacci Generator":

For 1 ≤ k ≤ 55, S_k = [100003 - 200003k + 300007{k}^3]\\;(\text{modulo}\\;1000000)

For 56 ≤ k, S_k = [S_{k - 24} + S_{k - 55}]\\;(\text{modulo}\\;1000000)

If Caller(n) = Called(n) then the user is assumed to have misdialled and the call fails; otherwise the call is successful.

From the start of the records, we say that any pair of users X and Y are friends if X calls Y or vice-versa. Similarly, X is a friend of a friend of Z if X is a friend of Y and Y is a friend of Z; and so on for longer chains.

The Prime Minister's phone number is 524287. After how many successful calls, not counting misdials, will 99% of the users (including the PM) be a friend, or a friend of a friend etc., of the Prime Minister?

--hints--

connectednessOfANetwork() should return 2325629.

assert.strictEqual(connectednessOfANetwork(), 2325629);

--seed--

--seed-contents--

function connectednessOfANetwork() {

  return true;
}

connectednessOfANetwork();

--solutions--

// solution required