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

2.0 KiB

id title challengeType forumTopicId dashedName
5900f4281000cf542c50ff39 問題 186: ネットワークのつながり 5 301822 problem-186-connectedness-of-a-network

--description--

下表は、100 万人のユーザーを持つ混雑した電話システムの記録です。

記録 No. 発信者 着信者
1 200007 100053
2 600183 500439
3 600863 701497
... ... ...

記録 No. n における発信者の電話番号と着信者の電話番号は、Caller(n) = S_{2n - 1}Called(n) = S_{2n} であり、ここで、{S}_{1,2,3,\ldots} は「ラグ付きフィボナッチ 法」で生成されます。

1 ≤ k ≤ 55 のとき、S_k = [100003 - 200003k + 300007{k}^3]\\;(\text{mod}\\;1000000) です。

56 ≤ k のとき、S_k = [S_{k - 24} + S_{k - 55}]\\;(\text{mod}\\;1000000) です。

Caller(n) = Called(n) の場合、ユーザーがかけ間違えたものとされ、発信は失敗します。それ以外の場合、発信は成功します。

記録の開始時点から、XY に、またはその逆に電話をかけたら、「ユーザ X とユーザ Y の対は友達である」ということにします。 同様に、XY の友達であり、YZ の友達であれば、XZ の友達です。このように友達の輪が広がっていきます。

首相の電話番号は 524287 です。 間違い電話を除き、発信が何回成功すれば、ユーザーの 99% (首相を含む) が首相の友達、友達の友達、または友達の友達の友達… (以下同様) になりますか。

--hints--

connectednessOfANetwork()2325629 を返す必要があります。

assert.strictEqual(connectednessOfANetwork(), 2325629);

--seed--

--seed-contents--

function connectednessOfANetwork() {

  return true;
}

connectednessOfANetwork();

--solutions--

// solution required