47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
![]() |
---
|
|||
|
id: 5900f5091000cf542c51001b
|
|||
|
title: 'Задача 408: Прийнятні шляхи через сітку'
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 302076
|
|||
|
dashedName: problem-408-admissible-paths-through-a-grid
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Назвемо точки ґратки ($x$, $y$) неприйнятними, якщо $x$, $y$, а $x + y$ — це всі додатні ідеальні квадрати.
|
|||
|
|
|||
|
Наприклад, (9, 16) є неприйнятними, а (0, 4), (3, 1) та (9, 4) — прийнятні.
|
|||
|
|
|||
|
Розглянемо шлях від точки ($x_1$, $y_1$) до точки ($x_2$, $y_2$), використовуючи лише одиничні кроки на північ чи схід. Назвемо такий шлях прийнятним, якщо жодна з його проміжних точок не є неприйнятною.
|
|||
|
|
|||
|
Нехай $P(n)$ — це кількість прийнятних шляхів з (0, 0) до ($n$, $n$). Можна перевірити, що $P(5) = 252$, $P(16) = 596\\,994\\,440$, а $P(1\\,000)\bmod 1\\,000\\,000\\,007 = 341\\,920\\,854$.
|
|||
|
|
|||
|
Знайдіть $P(10\\,000\\,000)\bmod 1\\,000\\,000\\,007$.
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
`admissiblePaths()` має повернути `299742733`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(admissiblePaths(), 299742733);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
function admissiblePaths() {
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
admissiblePaths();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|