51 lines
1.9 KiB
Markdown
51 lines
1.9 KiB
Markdown
![]() |
---
|
|||
|
id: 5900f5081000cf542c510019
|
|||
|
title: 'Завдання 411: Шлях вгору'
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 302080
|
|||
|
dashedName: problem-411-uphill-paths
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Нехай $n$ — це додатне ціле число. Припустимо, що є такі точки з координатами $(x, y) = (2^i\bmod n, 3^i\bmod n)$ для $0 ≤ i ≤ 2n$. Вважатимемо точки з однаковими координатами, як одну й ту саму точку.
|
|||
|
|
|||
|
Потрібно створити шлях від (0, 0) до ($n$, $n$) таким чином, щоб координати $x$ та $y$ не зменшувалися.
|
|||
|
|
|||
|
Нехай $S(n)$ — це максимальна кількість точок, через які може проходити шлях.
|
|||
|
|
|||
|
Наприклад, якщо $n = 22$, то є 11 точок, а допустимий шлях може проходити щонайбільше через 5 точок. Таким чином, $S(22) = 5$. Ілюстрація цього прикладу подана нижче, на ній можна побачити зразок оптимального шляху:
|
|||
|
|
|||
|
<img class="img-responsive center-block" alt="допустимий шлях, що проходить через 5 точок, при n = 22, з 11 окремими точками" src="https://cdn.freecodecamp.org/curriculum/project-euler/uphill-paths.png" style="background-color: white; padding: 10px;" />
|
|||
|
|
|||
|
Також можна перевірити, що $S(123) = 14$, а $S(10\\,000) = 48$.
|
|||
|
|
|||
|
Знайдіть $\sum S(k^5)$ для $1 ≤ k ≤ 30$.
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
`uphillPaths()` має повернути `9936352`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(uphillPaths(), 9936352);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
function uphillPaths() {
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
uphillPaths();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|