1.7 KiB
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f4281000cf542c50ff39 | Problema 186: Collegamento di una rete | 5 | 301822 | problem-186-connectedness-of-a-network |
--description--
Ecco i dati da un sistema telefonico molto usato con un milione di utenti:
RecNr | Chiamante | Chiamato |
---|---|---|
1 | 200007 | 100053 |
2 | 600183 | 500439 |
3 | 600863 | 701497 |
... | ... | ... |
Il numero di telefono del chiamante e il numero chiamato nel record n
sono Caller(n) = S_{2n - 1}
e Called(n) = S_{2n}
dove {S}_{1,, 3,\ldots}
provengono dal "Lagged Fibonacci Generator":
Per 1 ≤ k ≤ 55
, S_k = [100003 - 200003k + 300007{k}^3]\\;(\text{modulo}\\;1000000)
Per 56 ≤ k
, S_k = [S_{k - 24} + S_{k - 55}]\\;(\text{modulo}\\;1000000)
Se Caller(n) = Called(n)
allora si presume che l'utente abbia sbagliato e la chiamata fallisce; altrimenti la chiamata è riuscita.
Dall'inizio delle registrazioni, diciamo che qualsiasi coppia di utenti X
e Y
sono amici se X
chiama Y
o viceversa. Allo stesso modo, X
è un amico di un amico di Z
se X
è un amico di Y
e Y
è un amico di Z
; e così via per catene più lunghe.
Il numero di telefono del Primo Ministro è 524287. Dopo quante chiamate di successo, senza contare gli errori, il 99% degli utenti (compreso il PM) sarà un amico, o un amico di un amico ecc. del Primo Ministro?
--hints--
connectednessOfANetwork()
dovrebbe restituire 2325629
.
assert.strictEqual(connectednessOfANetwork(), 2325629);
--seed--
--seed-contents--
function connectednessOfANetwork() {
return true;
}
connectednessOfANetwork();
--solutions--
// solution required