59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
![]() |
---
|
|||
|
id: 5900f45b1000cf542c50ff6d
|
|||
|
title: 'Завдання 238: Нескінченна подорож по рядках'
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 301883
|
|||
|
dashedName: problem-238-infinite-string-tour
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Створіть послідовність чисел, використовуючи генератор псевдовипадкових чисел "Блум Блум Шуба":
|
|||
|
|
|||
|
$$ s_0 = 14025256 \\\\ s_{n + 1} = {s_n}^2 \\; mod \\; 20\\,300\\,713 $$
|
|||
|
|
|||
|
Об'єднайте ці числа $s_0s_1s_2\ldots$, щоб створити рядок $w$ нескінченної довжини. Тоді $w = 14025256741014958470038053646\ldots$
|
|||
|
|
|||
|
Для додатного цілого числа $k$, якщо не існує підрядка $w$ з сумою чисел, що дорівнює $k$, $p(k)$ визначено як 0. Якщо існує принаймні один підрядок $w$ з сумою чисел, що дорівнює $k$, визначаємо $p(k) = z$, де $z$ — початкова позиція найпершого такого підрядка.
|
|||
|
|
|||
|
Наприклад:
|
|||
|
|
|||
|
Підрядки 1, 14, 1402, … суми цифр яких дорівнюють 1, 5, 7, … починаються з позиції 1, отже, $p(1) = p(5) = p(7) = \ldots = 1$.
|
|||
|
|
|||
|
Підрядки 4, 402, 4025, … суми цифр яких дорівнюють 4, 6, 11, … починаються з позиції 2, отже, $p(4) = p(6) = p(11) = \ldots = 2$.
|
|||
|
|
|||
|
Підрядки 02, 0252, … суми цифр яких дорівнюють 2, 9, … починаються з позиції 3, отже, $p(2) = p(9) = \ldots = 3$.
|
|||
|
|
|||
|
Зауважте, що підрядок 025, що починається з позиції 3, має суму чисел, що дорівнює 7, проте перед ним маємо підрядок (що починається з позиції 1) з сумою чисел, що дорівнює 7, тому $p(7) = 1$, не 3.
|
|||
|
|
|||
|
Можемо перевірити, що для $0 < k ≤ {10}^3$, $\sum p(k) = 4742$.
|
|||
|
|
|||
|
Знайдіть $\sum p(k)$, для $0 < k ≤ 2 \times {10}^{15}$.
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
`infiniteStringTour()` має повернути `9922545104535660`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(infiniteStringTour(), 9922545104535660);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
function infiniteStringTour() {
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
infiniteStringTour();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|