2.5 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f4411000cf542c50ff53 | Завдання 212: Загальний об'єм прямокутних паралелепіпедів | 5 | 301854 | 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
.
assert.strictEqual(combinedValueOfCuboids(), 328968937309);
--seed--
--seed-contents--
function combinedValueOfCuboids() {
return true;
}
combinedValueOfCuboids();
--solutions--
// solution required