Files
freeCodeCamp/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-212-combined-volume-of-cuboids.md
2022-04-11 19:34:39 +05:30

58 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
```