51 lines
2.0 KiB
Markdown
51 lines
2.0 KiB
Markdown
![]() |
---
|
|||
|
id: 5900f51a1000cf542c51002d
|
|||
|
title: 'Завдання 430: Перевертання рядів'
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 302101
|
|||
|
dashedName: problem-430-range-flips
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Диски $N$ розміщені в ряд, пронумеровані зліва направо від 1 до $N$.
|
|||
|
|
|||
|
Кожен диск має чорну і білу сторону. Спочатку всі диски перевернуті білою стороною вгору.
|
|||
|
|
|||
|
При кожному перевертанні випадково вибираються два, не обов'язково різні, цілі числа $A$ та $B$ між 1 і $N$ (включно). Перевертаються усі диски з номерами від $A$ до $B$ (включно).
|
|||
|
|
|||
|
Наведений приклад показує випадок, де $N = 8$. При першому перевертанні $A = 5$, а $B = 2$, при другому перевертанні $A = 4$, а $B = 6$.
|
|||
|
|
|||
|
<img class="img-responsive center-block" alt="приклад, де N = 8, після першого перевертання A = 5, а B = 2, після другого A = 4, а B = 6" src="https://cdn.freecodecamp.org/curriculum/project-euler/range-flips.gif" style="background-color: white; padding: 10px;" />
|
|||
|
|
|||
|
Нехай $E(N, M)$ — це очікувана кількість дисків, які будуть перевернуті білою стороною вгору після $M$ перевертань. Можна перевірити, що $E(3, 1) = \frac{10}{9}$, $E(3, 2) = \frac{5}{3}$, $E(10, 4) ≈ 5.157$ та $E(100, 10) ≈ 51.893$.
|
|||
|
|
|||
|
Знайдіть $E({10}^{10}, 4000)$. Дайте відповідь, округлену до 2 знаків після коми.
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
`rangeFlips()` має видати `5000624921.38`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(rangeFlips(), 5000624921.38);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
function rangeFlips() {
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
rangeFlips();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|