55 lines
2.5 KiB
Markdown
55 lines
2.5 KiB
Markdown
![]() |
---
|
|||
|
id: 5900f4411000cf542c50ff53
|
|||
|
title: 'Завдання 212: Загальний об''єм прямокутних паралелепіпедів'
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 301854
|
|||
|
dashedName: problem-212-combined-volume-of-cuboids
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Вирівняний по осях прямокутний паралелепіпед з параметрами $\{ (x_0,y_0,z_0), (dx,dy,dz) \}$ складається з точок ($X$,$Y$,$Z$), для яких $x_0 ≤ X ≤ x_0 + dx$, $y_0 ≤ Y ≤ y_0 + dy$ та $z_0 ≤ Z ≤ z_0 + dz$. Об'єм прямокутного паралелепіпеда є добутком $dx × dy × dz$. Загальний об'єм декількох паралелепіпедів — це об'єм їхнього об'єднання і якщо вони перетинаються, він менший ніж сума окремих об'ємів паралелепіпедів.
|
|||
|
|
|||
|
Нехай $C_1, \ldots, C_{50000}$ — це набір 50000 вирівняних по осі паралелепіпедів, кожен паралелепіпед $C_n$ має такі параметри
|
|||
|
|
|||
|
$$\begin{align} & x_0 = S_{6n - 5} \\; \text{modulo} \\; 10000 \\\\ & y_0 = S_{6n - 4} \\; \text{modulo} \\; 10000 \\\\ & z_0 = S_{6n - 3} \\; \text{modulo} \\; 10000 \\\\ & dx = 1 + (S_{6n - 2} \\; \text{modulo} \\; 399) \\\\ & dy = 1 + (S_{6n - 1} \\; \text{modulo} \\; 399) \\\\ & dz = 1 + (S_{6n} \\; \text{modulo} \\; 399) \\\\ \end{align}$$
|
|||
|
|
|||
|
де $S_1, \ldots, S_{300000}$ отримуємо через генератор Фібоначчі:
|
|||
|
|
|||
|
Для $1 ≤ k ≤ 55$, $S_k = [100003 - 200003k + 300007k^3] \\; (modulo \\; 1000000)$
|
|||
|
|
|||
|
Для $56 ≤ k$, $S_k = [S_{k - 24} + S_{k - 55}] \\; (modulo \\; 1000000)$
|
|||
|
|
|||
|
Таким чином, $C_1$ має параметри $\{(7,53,183), (94,369,56)\}$, $C_2$ параметри $\{(2383,3563,5079), (42,212,344)\}$ і так далі.
|
|||
|
|
|||
|
Загальний об'єм перших 100 паралелепіпедів, $C_1, \ldots, C_{100}$, становить 723581599.
|
|||
|
|
|||
|
Яким буде загальний об'єм усіх 50000 паралелепіпедів $C_1, \ldots, C_{50000}$?
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
`combinedValueOfCuboids()` має повернути `328968937309`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(combinedValueOfCuboids(), 328968937309);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
function combinedValueOfCuboids() {
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
combinedValueOfCuboids();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|