71 lines
1.5 KiB
Markdown
71 lines
1.5 KiB
Markdown
|
---
|
||
|
id: 5
|
||
|
localeTitle: 5900f51a1000cf542c51002d
|
||
|
challengeType: 5
|
||
|
title: 'Problem 430: Range flips'
|
||
|
---
|
||
|
|
||
|
## Description
|
||
|
<section id='description'>
|
||
|
discos N se colocan en una fila, indexados de 1 a N de izquierda a derecha.
|
||
|
Cada disco tiene un lado negro y un lado blanco. Inicialmente todos los discos muestran su lado blanco.
|
||
|
|
||
|
En cada turno, dos enteros A y B, no necesariamente distintos, entre 1 y N (inclusive) se eligen de manera uniforme y aleatoria.
|
||
|
Todos los discos con un índice de A a B (inclusive) se invierten.
|
||
|
|
||
|
El siguiente ejemplo muestra el caso N = 8. En el primer turno A = 5 y B = 2, y en el segundo turno A = 4 y B = 6.
|
||
|
|
||
|
|
||
|
|
||
|
Sea E (N, M) el número esperado de discos que muestran su lado blanco después de que M gira.
|
||
|
Podemos verificar que E (3, 1) = 10/9, E (3, 2) = 5/3, E (10, 4) ≈ 5.157 y E (100, 10) ≈ 51.893.
|
||
|
|
||
|
Encuentra E (1010, 4000).
|
||
|
Da tu respuesta redondeada a 2 lugares decimales detrás del punto decimal.
|
||
|
</section>
|
||
|
|
||
|
## Instructions
|
||
|
<section id='instructions'>
|
||
|
|
||
|
</section>
|
||
|
|
||
|
## Tests
|
||
|
<section id='tests'>
|
||
|
|
||
|
```yml
|
||
|
tests:
|
||
|
- text: <code>euler430()</code> debe devolver 5000624921.38.
|
||
|
testString: 'assert.strictEqual(euler430(), 5000624921.38, "<code>euler430()</code> should return 5000624921.38.");'
|
||
|
|
||
|
```
|
||
|
|
||
|
</section>
|
||
|
|
||
|
## Challenge Seed
|
||
|
<section id='challengeSeed'>
|
||
|
|
||
|
<div id='js-seed'>
|
||
|
|
||
|
```js
|
||
|
function euler430() {
|
||
|
// Good luck!
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
euler430();
|
||
|
```
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
</section>
|
||
|
|
||
|
## Solution
|
||
|
<section id='solution'>
|
||
|
|
||
|
```js
|
||
|
// solution required
|
||
|
```
|
||
|
</section>
|