https://github.com/filonenkodima/iteam_test_assignment
https://github.com/filonenkodima/iteam_test_assignment
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/filonenkodima/iteam_test_assignment
- Owner: FilonenkoDima
- Created: 2024-12-10T19:56:35.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-11T15:05:06.000Z (over 1 year ago)
- Last Synced: 2025-04-07T17:22:18.305Z (about 1 year ago)
- Language: TypeScript
- Size: 287 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Задача
Знайти мінімальну кількість чисел, квадрат яких у сумі дорівнює заданому числу n.
## Демо


## Встановлення та запуск проєкта
1. Клонування репозиторію:
```bash
git clone https://github.com/FilonenkoDima/EasyTask.git
cd EasyTask
```
2. Встановлення залежностей:
```bash
npm install
```
3. Запуск сервера розробки:
```bash
npm start
```
4. Відкрийте браузер і перейдіть за посиланням:
```
http://localhost:4200
```
## Пояснення алгоритмів
#### Алгоритм 1: sumOfSquares_BFS
Цей алгоритм використовує метод пошуку в ширину (BFS) для обчислення мінімальної кількості квадратів. \
1. Створюється список всіх квадратів, менших або рівних n.
2. Використовується BFS для пошуку мінімальної глибини, на якій можна дійти
до 0, віднімаючи квадрати з поточного значення.
3. Вершини (залишки) додаються в чергу, щоб перевірити всі можливі
комбінації.
Time Complexity: 𝑂 (𝑛 × √𝑛) \
Space Complexity: 𝑂(𝑛): для відвіданих вузлів і черги BFS.
#### Алгоритм 2: sumOfSquares_Lagrange
Цей алгоритм реалізує Теорему Лагранжа про чотири квадрати, яка стверджує,
що будь-яке натуральне число може бути подане як суму чотирьох або менше
квадратів натуральних чисел. На основі цієї теореми алгоритм обчислює
мінімальну кількість квадратів.
1. Перевіряємо, чи є число n повним квадратом. Якщо так — повертаємо 1.
2. Ітеруємо через всі числа до √𝑛 і перевіряємо, чи різниця n - i^2 є повним квадратом. Якщо так — повертаємо 2.
3. Видаляємо множники 4 з n і перевіряємо, чи залишок після поділу на 8 дорівнює 7. Якщо так — повертаємо 4.
4. У всіх інших випадках повертаємо 3.
Time Complexity: 𝑂 (√𝑛). \
Space Complexity: 𝑂(1): використовуються лише константні додаткові змінні.