Files
freeCodeCamp/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-450-hypocycloid-and-lattice-points.md

63 lines
2.6 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: 5900f52e1000cf542c510041
title: 'Задача 450: Гіпоциклоїда та вузли ґратки'
challengeType: 5
forumTopicId: 302123
dashedName: problem-450-hypocycloid-and-lattice-points
---
# --description--
Гіпоциклоїда — це крива, яка утворюється точкою малого кола, що котиться по внутрішній стороні іншого кола. Параметричне рівняння гіпоциклоїди з центром на початку координат, яка починається на крайній правій точці, задається так:
$$x(t) = (R - r) \cos(t) + r \cos(\frac{R - r}{r}t)$$
$$y(t) = (R - r) \sin(t) - r \sin(\frac{R - r}{r} t)$$
Де $R$ — радіус великого кола, $r$ — радіус малого кола.
Нехай $C(R, r)$ — це набір окремих точок з координатами, представленими цілими числами, на гіпоциклоїді з радіусом $R$ та $r$, для яких існує відповідне значення $t$, при якому $\sin(t)$ та $\cos(t)$ є раціональними числами.
Нехай $S(R, r) = \sum\_{(x,y) \in C(R, r)} |x| + |y|$ — це сума абсолютних значень точок координат $x$ та $y$ у $C(R, r)$.
Нехай $T(N) = \sum_{R = 3}^N \sum_{r=1}^{\left\lfloor \frac{R - 1}{2} \right\rfloor} S(R, r)$ — це сума натуральних чисел $S(R, r)$ для $R$ і $r$, $R\leq N$ та $2r < R$.
Дано:
$$\begin{align} C(3, 1) = & \\{(3, 0), (-1, 2), (-1,0), (-1,-2)\\} \\\\ C(2500, 1000) = & \\{(2500, 0), (772, 2376), (772, -2376), (516, 1792), (516, -1792), (500, 0), (68, 504), \\\\ &(68, -504),(-1356, 1088), (-1356, -1088), (-1500, 1000), (-1500, -1000)\\} \end{align}$$
**Примітка:** (-625, 0) не елемент $C(2500, 1000)$, оскільки $\sin(t)$ не є раціональним числом для відповідних значень t.
$S(3, 1) = (|3| + |0|) + (|-1| + |2|) + (|-1| + |0|) + (|-1| + |-2|) = 10$
$T(3) = 10$; $T(10) = 524$; $T(100) = 580\\,442$; $T({10}^3) = 583\\,108\\,600$.
Знайдіть $T({10}^6)$.
# --hints--
`hypocycloidAndLatticePoints()` повинен видати `583333163984220900`.
```js
assert.strictEqual(hypocycloidAndLatticePoints(), 583333163984220900);
```
# --seed--
## --seed-contents--
```js
function hypocycloidAndLatticePoints() {
return true;
}
hypocycloidAndLatticePoints();
```
# --solutions--
```js
// solution required
```