chore(i18n,curriculum): processed translations - new ukrainian (#44447)

This commit is contained in:
camperbot
2021-12-10 11:14:24 +05:30
committed by GitHub
parent 8651ee1797
commit 0473dedf47
1663 changed files with 156692 additions and 1 deletions

View File

@ -0,0 +1,73 @@
---
id: 5900f36e1000cf542c50fe80
title: 'Завдання 1: Числа кратні 3 та 5'
challengeType: 5
forumTopicId: 301722
dashedName: problem-1-multiples-of-3-and-5
---
# --description--
Якщо ми запишемо усі натуральні числа до 10, кратні числам 3 та 5, то отримаємо 3, 5, 6 та 9. Сума цих кратних — 23.
Знайдіть суму всіх чисел кратних 3 та 5, які менші певного заданого значення: `number`.
# --hints--
`multiplesOf3and5(10)` має повертати число.
```js
assert(typeof multiplesOf3and5(10) === 'number');
```
`multiplesOf3and5(49)` має повертати 543.
```js
assert.strictEqual(multiplesOf3and5(49), 543);
```
`multiplesOf3and5(1000)` має повернути 233168.
```js
assert.strictEqual(multiplesOf3and5(1000), 233168);
```
`multiplesOf3and5(8456)` має повертати 16687353.
```js
assert.strictEqual(multiplesOf3and5(8456), 16687353);
```
`multiplesOf3and5(19564)` має повертати 89301183.
```js
assert.strictEqual(multiplesOf3and5(19564), 89301183);
```
# --seed--
## --seed-contents--
```js
function multiplesOf3and5(number) {
return true;
}
multiplesOf3and5(1000);
```
# --solutions--
```js
const multiplesOf3and5 = (number) => {
var total = 0;
for(var i = 0; i < number; i++) {
if(i % 3 == 0 || i % 5 == 0) {
total += i;
}
}
return total;
};
```

View File

@ -0,0 +1,81 @@
---
id: 5900f3761000cf542c50fe89
title: 'Завдання 10: Сума простих чисел'
challengeType: 5
forumTopicId: 301723
dashedName: problem-10-summation-of-primes
---
# --description--
Сума простих чисел, які менші 10 буде 2 + 3 + 5 + 7 = 17.
Знайдіть суму всіх простих чисел, які менші `n`.
# --hints--
`primeSummation(17)` має повернути число.
```js
assert(typeof primeSummation(17) === 'number');
```
`primeSummation(17)` має повернути 41.
```js
assert.strictEqual(primeSummation(17), 41);
```
`primeSummation(2001)` має повернути 277050.
```js
assert.strictEqual(primeSummation(2001), 277050);
```
`primeSummation(140759)` має повернути 873608362.
```js
assert.strictEqual(primeSummation(140759), 873608362);
```
`primeSummation(2000000)` має повернути 142913828922.
```js
assert.strictEqual(primeSummation(2000000), 142913828922);
```
# --seed--
## --seed-contents--
```js
function primeSummation(n) {
return true;
}
primeSummation(2000000);
```
# --solutions--
```js
function primeSummation(n) {
if (n < 3) { return 0 };
let nums = [0, 0, 2];
for (let i = 3; i < n; i += 2){
nums.push(i);
nums.push(0);
}
let sum = 2;
for (let i = 3; i < n; i += 2){
if (nums[i] !== 0){
sum += nums[i];
for (let j = i*i; j < n; j += i){
nums[j] = 0;
}
}
}
return sum;
}
```

View File

@ -0,0 +1,87 @@
---
id: 5900f3d01000cf542c50fee3
title: 'Завдання 100: Ймовірні комбінації'
challengeType: 5
forumTopicId: 301724
dashedName: problem-100-arranged-probability
---
# --description--
Припустимо, що в коробці є двадцять один кольоровий диск, з яких п’ятнадцять - синього кольору, а шість - червоного; два диски обрали навмання, тож, є ймовірність, що обрали одразу два синіх диски.
$${P(BB)} = \frac{15}{21}×\frac{14}{20} = \frac{1}{2}$$
Наступний варіант розміщення дисків, за якого вірогідність взяти навмання два синіх диски становить 50%, це коли у коробці є вісімдесят п’ять синіх і тридцять п’ять червоних дисків.
Визначте ймовірну кількість синіх дисків у коробці, якщо у першому варіанті загальна кількість становить більше `limit` дисків.
# --hints--
`arrangedProbability(20)` дорівнює числу.
```js
assert(typeof arrangedProbability(10) === 'number');
```
`arrangedProbability(20)` має повернути `15`.
```js
assert.strictEqual(arrangedProbability(20), 15);
```
`arrangedProbability(100)` має повернути `85`.
```js
assert.strictEqual(arrangedProbability(100), 85);
```
`arrangedProbability(100000)` має повернути `97513`.
```js
assert.strictEqual(arrangedProbability(100000), 97513);
```
`arrangedProbability(1000000000)` має повернути `3822685023`.
```js
assert.strictEqual(arrangedProbability(1000000000), 3822685023);
```
`arrangedProbability(1000000000000)` має повернути `756872327473`.
```js
assert.strictEqual(arrangedProbability(1000000000000), 756872327473);
```
# --seed--
## --seed-contents--
```js
function arrangedProbability(limit) {
return true;
}
arrangedProbability(20);
```
# --solutions--
```js
function arrangedProbability(limit) {
// Based on https://www.mathblog.dk/project-euler-100-blue-discs-two-blue/
let blue = 15;
let discs = 21;
while (discs < limit) {
const nextBlue = 3 * blue + 2 * discs - 2;
const nextDiscs = 4 * blue + 3 * discs - 3;
blue = nextBlue;
discs = nextDiscs;
}
return blue;
}
```

View File

@ -0,0 +1,56 @@
---
id: 5900f3d21000cf542c50fee4
title: 'Завдання 101: Оптимальний многочлен'
challengeType: 5
forumTopicId: 301725
dashedName: problem-101-optimum-polynomial
---
# --description--
Якщо нам представлені перші k членів послідовності, неможливо з упевненістю назвати значення наступного члена, оскільки існує нескінченно багато поліноміальних функцій, які можуть моделювати послідовність.
Як приклад, розгляньмо послідовність кубів чисел. Вона визначається твірною функцією, $u_n = n^3: 1, 8, 27, 64, 125, 216, \ldots$
Припустимо, що нам відомі лише перші два члена цієї послідовності. Керуючись принципом "чим простіше тим краще", припустимо лінійну залежність та передбачимо, що значення наступного члена дорівнює 15 (різниця арифметичної прогресії дорівнює 7). Навіть, якщо б нам були відомі перші три члени, згідно з тим самим принципом "простоти", слід припустити квадратичну залежність.
Визначимо $OP(k, n)$ як член $n^{th}$ оптимальний многочлен твірної функції для перших k членів послідовності. Треба чітко розуміти, що $OP(k, n)$ буде точно генерувати члени послідовності для $n ≤ k$, тоді, потенційно, першим неправильним членом (FIT) (з англ. First incorrect term) буде $OP(k, k+1)$; у цьому випадку назвемо його поганим оптимальним многочленом (BOP) (від англ. Bad optimum polynomial).
За основу візьмемо випадок коли відомо лише перший член послідовності, тоді раціональніше було б припустити постійність, тобто для $n ≥ 2, OP(1, n) = u_1$.
Звідси отримуємо такі оптимальні многочлени для кубічної послідовності:
$$\begin{array}{ll} OP(1, n) = 1 & 1, {\color{red}1}, 1, 1, \ldots \\\\ OP(2, n) = 7n6 & 1, 8, {\color{red}{15}}, \ldots \\\\ OP(3, n) = 6n^211n+6 & 1, 8, 27, {\color{red}{58}}, \ldots \\\\ OP(4, n) = n^3 & 1, 8, 27, 64, 125, \ldots \end{array}$$
Очевидно, не існує BOP для k ≥ 4. Враховуючи суму перших неправильних членів, створених поганими оптимальними многочленами (зазначені у $\color{red}{red}$ вище), отримуємо 1 + 15 + 58 = 74. Розгляньмо твірну функцію для многочлена десятого степеня:
$$u_n = 1 n + n^2 n^3 + n^4 n^5 + n^6 n^7 + n^8 n^9 + n^{10}$$
Знайдіть суму перших неправильних членів (FIT) для поганих оптимальних многочленів (BOP).
# --hints--
`optimumPolynomial()` має повертати `37076114526`.
```js
assert.strictEqual(optimumPolynomial(), 37076114526);
```
# --seed--
## --seed-contents--
```js
function optimumPolynomial() {
return true;
}
optimumPolynomial();
```
# --solutions--
```js
// solution required
```

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,53 @@
---
id: 5900f3d61000cf542c50fee7
title: 'Завдання 103: Особливі суми підмножини: оптимізація'
challengeType: 5
forumTopicId: 301727
dashedName: problem-103-special-subset-sums-optimum
---
# --description--
Нехай $S(A)$ показує суму елементів у наборі A з розміром набору n. Назвемо це особливим набором сум, якщо для будь-яких двох не порожніх неперетинних підмножин В і С, виконуються умови:
1. $S(B) ≠ S(C)$; тобто суми підмножин не можуть бути рівними.
2. Якщо В містить більше елементів ніж C, тоді $S(B) > S(C)$.
Якщо $S(A)$ обмежене даним n, назвемо його оптимальним набором особливих сум. Перші п'ять оптимальних особливих сум наведені нижче.
$\begin{align} & n = 1: \\{1\\} \\\\ & n = 2: \\{1, 2\\} \\ & n = 3: \\{2, 3, 3, 4\\} \\\\ & n = 4: \\{3, 5, 6, 7\\} \\\\ & n = 5: \\{6, 9, 11, 12, 13\\} \\\\ \end{align}$$
Здається, що для даного оптимального набору $A = \\{a_1, a_2, \ldots, a_n\\}$, наступний оптимальний набір у вигляді $B = \\{b, a_1 + b, a_2 + b, \ldots, a_n + b\\}$, де b - середній елемент з попереднього рядка.
Застосувавши цю "умову", очікуємо такий оптимальний набір для $n = 6$ буде $A = \\{11, 17, 20, 22, 23, 24\\}$, з $S(А) = 117$. Однак, це не набір оптимальних множин, оскільки ми просто застосували алгоритм для забезпечення майже оптимального набору. Для $n = 6$ оптимальний набір - $A = \\{11, 18, 19, 20, 22, 25\\}$, з $S(A) = 115$ та відповідний рядок у наборі: `111819202225`.
Якщо відомо, що А є оптимальною спеціальною сумою, заданою для $n = 7$, знайдіть її в рядку.
**Примітка:** Це завдання пов'язане із завданнями 105 та 106.
# --hints--
`optimumSpecialSumSet()` повинен повернути рядок `20313839404245`.
```js
assert.strictEqual(optimumSpecialSumSet(), '20313839404245');
```
# --seed--
## --seed-contents--
```js
function optimumSpecialSumSet() {
return true;
}
optimumSpecialSumSet();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3d51000cf542c50fee6
title: 'Завдання 104: Пан-цифрові кінці чисел Фібоначчі'
challengeType: 5
forumTopicId: 301728
dashedName: problem-104-pandigital-fibonacci-ends
---
# --description--
Послідовність Фібоначчі визначається таким рекурентним співвідношенням:
$F_n = F_{n 1} + F_{n 2}$, де $F_1 = 1$ та $F_2 = 1$
Виявляється, що число $F_{541}$, що складається з 113 цифр, є першим числом Фібоначчі, у якого останні дев'ять цифр утворюють панцифрове число з цифрами 1 - 9 (воно містить всі цифри від 1 до 9, але не обов'язково в порядку зростання). А число $F_{2749}$, що складається з 575 цифр, є першим числом Фібоначчі, у якого перші дев'ять цифр утворюють панцифрове число з цифрами від 1 до 9.
Відомо, що число $F_k$ є першим числом Фібоначчі, у якого як перші, ТАК і останні дев'ять цифр утворюють пан-цифрові числа з цифрами 1-9, знайдіть `k`.
# --hints--
`pandigitalFibonacciEnds()` має повернути `329468`.
```js
assert.strictEqual(pandigitalFibonacciEnds(), 329468);
```
# --seed--
## --seed-contents--
```js
function pandigitalFibonacciEnds() {
return true;
}
pandigitalFibonacciEnds();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,59 @@
---
id: 5900f3d61000cf542c50fee8
title: 'Завдання 105: Особливі підмножини суми: тестування'
challengeType: 5
forumTopicId: 301729
dashedName: problem-105-special-subset-sums-testing
---
# --description--
Нехай $S(A)$ показує суму елементів у множині A розміру n. Будемо називати це спеціальним набором сум, якщо для будь-яких двох непустих неперетинних підмножин, В і С, такі властивості правдиві:
1. $S(B) ≠ S(C)$; тобто суми підмножин не можуть бути рівними.
2. Якщо B містить більше елементів ніж C, тоді $S(B) > S(C)$.
Наприклад, {81, 88, 75, 87, 84, 86, 65} не є набором спеціальних сум, тому що 65 + 87 + 88 = 75 + 84, тоді як {157, 150, 164, 119, 79, 159, 169, 139, 158} відповідає обом правилам для всіх можливих комбінацій підмножин і $S(A) = 1286$.
Використовуючи `sets`, масив з однією сотнею наборів, який містить від семи до дванадцяти елементів (два подані вище приклади є першими двома наборами), визначте всі набори спеціальних сум, $A_1, A_2, \ldots, A_k$, та знайдіть значення $(A_1) + S(A_2) + \cdots + S(A_k)$.
**Note:** Це завдання пов'язане зі Завданням 103 та Завданням 106.
# --hints--
`testingSpecialSubsetSums(testSets)` повинен повернутися як `73702`.
```js
assert.strictEqual(testingSpecialSubsetSums(_testSets), 73702);
```
# --seed--
## --after-user-code--
```js
const _testSets = [
[81,88,75,42,87,84,86,65],[157,150,164,119,79,159,161,139,158],[673,465,569,603,629,592,584,300,601,599,600],[90,85,83,84,65,87,76,46],[165,168,169,190,162,85,176,167,127],[224,275,278,249,277,279,289,295,139],[354,370,362,384,359,324,360,180,350,270],[599,595,557,298,448,596,577,667,597,588,602],[175,199,137,88,187,173,168,171,174],[93,187,196,144,185,178,186,202,182],[157,155,81,158,119,176,152,167,159],[184,165,159,166,163,167,174,124,83],[1211,1212,1287,605,1208,1189,1060,1216,1243,1200,908,1210],[339,299,153,305,282,304,313,306,302,228],[94,104,63,112,80,84,93,96],[41,88,82,85,61,74,83,81],[90,67,84,83,82,97,86,41],[299,303,151,301,291,302,307,377,333,280],[55,40,48,44,25,42,41],[1038,1188,1255,1184,594,890,1173,1151,1186,1203,1187,1195],[76,132,133,144,135,99,128,154],[77,46,108,81,85,84,93,83],[624,596,391,605,529,610,607,568,604,603,453],[83,167,166,189,163,174,160,165,133],[308,281,389,292,346,303,302,304,300,173],[593,1151,1187,1184,890,1040,1173,1186,1195,1255,1188,1203],[68,46,64,33,60,58,65],[65,43,88,87,86,99,93,90],[83,78,107,48,84,87,96,85],[1188,1173,1256,1038,1187,1151,890,1186,1184,1203,594,1195],[302,324,280,296,294,160,367,298,264,299],[521,760,682,687,646,664,342,698,692,686,672],[56,95,86,97,96,89,108,120],[344,356,262,343,340,382,337,175,361,330],[47,44,42,27,41,40,37],[139,155,161,158,118,166,154,156,78],[118,157,164,158,161,79,139,150,159],[299,292,371,150,300,301,281,303,306,262],[85,77,86,84,44,88,91,67],[88,85,84,44,65,91,76,86],[138,141,127,96,136,154,135,76],[292,308,302,346,300,324,304,305,238,166],[354,342,341,257,348,343,345,321,170,301],[84,178,168,167,131,170,193,166,162],[686,701,706,673,694,687,652,343,683,606,518],[295,293,301,367,296,279,297,263,323,159],[1038,1184,593,890,1188,1173,1187,1186,1195,1150,1203,1255],[343,364,388,402,191,383,382,385,288,374],[1187,1036,1183,591,1184,1175,888,1197,1182,1219,1115,1167],[151,291,307,303,345,238,299,323,301,302],[140,151,143,138,99,69,131,137],[29,44,42,59,41,36,40],[348,329,343,344,338,315,169,359,375,271],[48,39,34,37,50,40,41],[593,445,595,558,662,602,591,297,610,580,594],[686,651,681,342,541,687,691,707,604,675,699],[180,99,189,166,194,188,144,187,199],[321,349,335,343,377,176,265,356,344,332],[1151,1255,1195,1173,1184,1186,1188,1187,1203,593,1038,891],[90,88,100,83,62,113,80,89],[308,303,238,300,151,304,324,293,346,302],[59,38,50,41,42,35,40],[352,366,174,355,344,265,343,310,338,331],[91,89,93,90,117,85,60,106],[146,186,166,175,202,92,184,183,189],[82,67,96,44,80,79,88,76],[54,50,58,66,31,61,64],[343,266,344,172,308,336,364,350,359,333],[88,49,87,82,90,98,86,115],[20,47,49,51,54,48,40],[159,79,177,158,157,152,155,167,118],[1219,1183,1182,1115,1035,1186,591,1197,1167,887,1184,1175],[611,518,693,343,704,667,686,682,677,687,725],[607,599,634,305,677,604,603,580,452,605,591],[682,686,635,675,692,730,687,342,517,658,695],[662,296,573,598,592,584,553,593,595,443,591],[180,185,186,199,187,210,93,177,149],[197,136,179,185,156,182,180,178,99],[271,298,218,279,285,282,280,238,140],[1187,1151,890,593,1194,1188,1184,1173,1038,1186,1255,1203],[169,161,177,192,130,165,84,167,168],[50,42,43,41,66,39,36],[590,669,604,579,448,599,560,299,601,597,598],[174,191,206,179,184,142,177,180,90],[298,299,297,306,164,285,374,269,329,295],[181,172,162,138,170,195,86,169,168],[1184,1197,591,1182,1186,889,1167,1219,1183,1033,1115,1175],[644,695,691,679,667,687,340,681,770,686,517],[606,524,592,576,628,593,591,584,296,444,595],[94,127,154,138,135,74,136,141],[179,168,172,178,177,89,198,186,137],[302,299,291,300,298,149,260,305,280,370],[678,517,670,686,682,768,687,648,342,692,702],[302,290,304,376,333,303,306,298,279,153],[95,102,109,54,96,75,85,97],[150,154,146,78,152,151,162,173,119],[150,143,157,152,184,112,154,151,132],[36,41,54,40,25,44,42],[37,48,34,59,39,41,40],[681,603,638,611,584,303,454,607,606,605,596]
];
```
## --seed-contents--
```js
function testingSpecialSubsetSums(sets) {
return true;
}
const testSets = [
[81,88,75,42,87,84,86,65],[157,150,164,119,79,159,161,139,158],[673,465,569,603,629,592,584,300,601,599,600],[90,85,83,84,65,87,76,46],[165,168,169,190,162,85,176,167,127],[224,275,278,249,277,279,289,295,139],[354,370,362,384,359,324,360,180,350,270],[599,595,557,298,448,596,577,667,597,588,602],[175,199,137,88,187,173,168,171,174],[93,187,196,144,185,178,186,202,182],[157,155,81,158,119,176,152,167,159],[184,165,159,166,163,167,174,124,83],[1211,1212,1287,605,1208,1189,1060,1216,1243,1200,908,1210],[339,299,153,305,282,304,313,306,302,228],[94,104,63,112,80,84,93,96],[41,88,82,85,61,74,83,81],[90,67,84,83,82,97,86,41],[299,303,151,301,291,302,307,377,333,280],[55,40,48,44,25,42,41],[1038,1188,1255,1184,594,890,1173,1151,1186,1203,1187,1195],[76,132,133,144,135,99,128,154],[77,46,108,81,85,84,93,83],[624,596,391,605,529,610,607,568,604,603,453],[83,167,166,189,163,174,160,165,133],[308,281,389,292,346,303,302,304,300,173],[593,1151,1187,1184,890,1040,1173,1186,1195,1255,1188,1203],[68,46,64,33,60,58,65],[65,43,88,87,86,99,93,90],[83,78,107,48,84,87,96,85],[1188,1173,1256,1038,1187,1151,890,1186,1184,1203,594,1195],[302,324,280,296,294,160,367,298,264,299],[521,760,682,687,646,664,342,698,692,686,672],[56,95,86,97,96,89,108,120],[344,356,262,343,340,382,337,175,361,330],[47,44,42,27,41,40,37],[139,155,161,158,118,166,154,156,78],[118,157,164,158,161,79,139,150,159],[299,292,371,150,300,301,281,303,306,262],[85,77,86,84,44,88,91,67],[88,85,84,44,65,91,76,86],[138,141,127,96,136,154,135,76],[292,308,302,346,300,324,304,305,238,166],[354,342,341,257,348,343,345,321,170,301],[84,178,168,167,131,170,193,166,162],[686,701,706,673,694,687,652,343,683,606,518],[295,293,301,367,296,279,297,263,323,159],[1038,1184,593,890,1188,1173,1187,1186,1195,1150,1203,1255],[343,364,388,402,191,383,382,385,288,374],[1187,1036,1183,591,1184,1175,888,1197,1182,1219,1115,1167],[151,291,307,303,345,238,299,323,301,302],[140,151,143,138,99,69,131,137],[29,44,42,59,41,36,40],[348,329,343,344,338,315,169,359,375,271],[48,39,34,37,50,40,41],[593,445,595,558,662,602,591,297,610,580,594],[686,651,681,342,541,687,691,707,604,675,699],[180,99,189,166,194,188,144,187,199],[321,349,335,343,377,176,265,356,344,332],[1151,1255,1195,1173,1184,1186,1188,1187,1203,593,1038,891],[90,88,100,83,62,113,80,89],[308,303,238,300,151,304,324,293,346,302],[59,38,50,41,42,35,40],[352,366,174,355,344,265,343,310,338,331],[91,89,93,90,117,85,60,106],[146,186,166,175,202,92,184,183,189],[82,67,96,44,80,79,88,76],[54,50,58,66,31,61,64],[343,266,344,172,308,336,364,350,359,333],[88,49,87,82,90,98,86,115],[20,47,49,51,54,48,40],[159,79,177,158,157,152,155,167,118],[1219,1183,1182,1115,1035,1186,591,1197,1167,887,1184,1175],[611,518,693,343,704,667,686,682,677,687,725],[607,599,634,305,677,604,603,580,452,605,591],[682,686,635,675,692,730,687,342,517,658,695],[662,296,573,598,592,584,553,593,595,443,591],[180,185,186,199,187,210,93,177,149],[197,136,179,185,156,182,180,178,99],[271,298,218,279,285,282,280,238,140],[1187,1151,890,593,1194,1188,1184,1173,1038,1186,1255,1203],[169,161,177,192,130,165,84,167,168],[50,42,43,41,66,39,36],[590,669,604,579,448,599,560,299,601,597,598],[174,191,206,179,184,142,177,180,90],[298,299,297,306,164,285,374,269,329,295],[181,172,162,138,170,195,86,169,168],[1184,1197,591,1182,1186,889,1167,1219,1183,1033,1115,1175],[644,695,691,679,667,687,340,681,770,686,517],[606,524,592,576,628,593,591,584,296,444,595],[94,127,154,138,135,74,136,141],[179,168,172,178,177,89,198,186,137],[302,299,291,300,298,149,260,305,280,370],[678,517,670,686,682,768,687,648,342,692,702],[302,290,304,376,333,303,306,298,279,153],[95,102,109,54,96,75,85,97],[150,154,146,78,152,151,162,173,119],[150,143,157,152,184,112,154,151,132],[36,41,54,40,25,44,42],[37,48,34,59,39,41,40],[681,603,638,611,584,303,454,607,606,605,596]
];
testingSpecialSubsetSums(testSets);
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,49 @@
---
id: 5900f3d71000cf542c50fee9
title: 'Завдання 106: Особливі суми підмножини: метаналіз'
challengeType: 5
forumTopicId: 301730
dashedName: problem-106-special-subset-sums-meta-testing
---
# --description--
Нехай $S(A)$ - сума елементів у наборі A з розміром набору n. Назвемо це спеціальним набором сум, якщо для будь-яких двох не порожніх неперетинних множин В і С, виконуються умови:
1. $S(B) ≠ S(C)$; тобто суми підмножин не можуть бути рівними.
2. Якщо B містить більше елементів, ніж C, то $S(B) > S(C)$.
У цьому завданні, припустимо, що даний набір містить n кількість елементів, що закономірно збільшуються, і для нього справджується друга умова.
Несподівано, що з 25 можливих пар підмножин, які можна отримати з набору, для яких n = 4, лише 1 пару потрібно перевірити на відповідність першій умові. Аналогічно, якщо n = 7, треба перевірити лише 70 з 966 пар підмножин.
Скільки з 261625 можливих пар підмножин треба перевірити на відповідність першій умові, якщо n = 12?
**Примітка:** Це Завдання пов'язане з Завданням 103 та Завданням 105.
# --hints--
`numberRotations()`має повертати`21384`.
```js
assert.strictEqual(subsetSumsMetaTesting(), 21384);
```
# --seed--
## --seed-contents--
```js
function subsetSumsMetaTesting() {
return true;
}
subsetSumsMetaTesting();
```
# --solutions--
```js
// solution required
```

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,46 @@
---
id: 5900f3d91000cf542c50feeb
title: 'Завдання 108: Діофантові рівняння першого степеня'
challengeType: 5
forumTopicId: 301732
dashedName: problem-108-diophantine-reciprocals-i
---
# --description--
У наступному рівнянні x, y і n - цілі натуральні числа.
$$\frac{1}{x} + \frac{{1}{y} = \frac{1}{n}$$
Для `n` = 4 існує три різних рішення:
$$\begin{align} & \frac{1}{5} + \frac{1}{20} = \frac{1}{4}\\\\ \\\\ & \frac{1}{6} + \frac{1}{12} = \frac{1}{4}\\\\ \\\\ & \frac{1}{8} + \frac{1}{8} = \frac{1}{4} \end{align}$$
Яке найменше значення `n`, для якого кількість рішень перевищує тисячу?
# --hints--
`diophantineOne()` має повертати ` 180180 `.
```js
assert.strictEqual(diophantineOne(), 180180);
```
# --seed--
## --seed-contents--
```js
function diophantineOne() {
return true;
}
diophantineOne();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,52 @@
---
id: 5900f3db1000cf542c50feec
title: 'Завдання 109: Дартс'
challengeType: 5
forumTopicId: 301733
dashedName: problem-109-darts
---
# --description--
У грі дартс гравець кидає три дротики у мішень, розділену на двадцять рівних секторів, пронумерованих від одного до двадцяти.
<img class="img-responsive center-block" alt="Мішень для дартс" src="https://cdn.freecodecamp.org/curriculum/project-euler/darts.png" style="background-color: white; padding: 10px;" />
Кількість очків визначається номером сектору, у який потрапив дротик. Влучення дротика за межами червоного/зеленого зовнішнього кільця очок не приносить. Кожному чорному та білому сектору всередині цього кільця привласнене окреме число. Червоне/зелене зовнішнє та середнє кільця подвоюють чи потроюють числа сектора відповідно.
У центрі дошки два кола, їх називають "яблучко" або "бичаче око". Влучання у центральне зелене кільце приносить 25 очок, а у червоне 50 очок.
Існує чимало різновидів гри, зокрема, у найпопулярнішій з них гравці починають з рахунку 301 (варіант 501). Перемагає гравець, який перший зменшить рахунок до нуля. Також можна грати в "подвоєну" систему: гравець повинен потрапити у зону подвоєння (включно з бичачим оком у центрі мішені) під час останнього метання; попадання в інший сектор, що привів рахунок до перебору або одиниці, означає, що очки серії не зараховуються.
"Чекаут" коли гравець може завершити гру при поточному рахунку; найвищий чекаут 170: T20 T25 D25 (два попадання у потрійне 20 та в яблучко). Існує одинадцять різних варіантів чекауту при рахунку 6:
$$\початок{array} \text{D3} & & \\\\ D1 & D2 & \\\\ S2 & D2 & \\\\ D2 & D1 & \\\\ S4 & D1 & \\\\ S1 & S1 & D2 \\\\ S1 & T1 & D1 \\\\ S1 & S3 & D1 \\\\ D1 & D1 & D1 \\\\ D1 & S2 & D1 \\\\ S2 & S2 & D1 \кінець{array}$$
Зверніть увагу, що D1 D2 відрізняється від D2 D1, оскільки вони закінчуються різними подвоєннями. Однак, комбінація S1 T1 D1 вважається такою ж, як і T1 S1 D1. До того ж, не потрібно вказувати промахи у комбінаціях; наприклад, D3 це те саме, що й 0 D3 і 0 0 D3. Неймовірно, що загалом існує 42336 різних способів чекауту. Скільки різних способів чекауту має гравець з балом меншим за 100?
# --hints--
`darts()` повинен повертатися як `38182`.
```js
assert.strictEqual(darts(), 38182);
```
# --seed--
## --seed-contents--
```js
function darts() {
return true;
}
darts();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,182 @@
---
id: 5900f3781000cf542c50fe8a
title: 'Завдання 11: Найбільший добуток у таблиці'
challengeType: 5
forumTopicId: 301734
dashedName: problem-11-largest-product-in-a-grid
---
# --description--
Нижче зображена таблиця розміром 20х20, у якій 4 числа, розташованих по діагоналі, позначені червоним.
<div style='text-align: center;'>
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08<br>
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00<br>
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65<br>
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91<br>
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80<br>
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50<br>
32 98 81 28 64 23 67 10 <span style='color: red'><b>26</b></span> 38 40 67 59 54 70 66 18 38 64 70<br>
67 26 20 68 02 62 12 20 95 <span style='color: red'><b>63</b></span> 94 39 63 08 40 91 66 49 94 21<br>
24 55 58 05 66 73 99 26 97 17 <span style='color: red'><b>78</b></span> 78 96 83 14 88 34 89 63 72<br>
21 36 23 09 75 00 76 44 20 45 35 <span style='color: red'><b>14</b></span> 00 61 33 97 34 31 33 95<br>
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92<br>
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57<br>
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58<br>
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40<br>
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66<br>
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69<br>
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36<br>
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16<br>
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54<br>
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48<br>
</div>
Добутком виразу 26 × 63 × 78 × 14 є число 1788696.
Який найбільший добуток чотирьох чисел, розташованих в одному напрямку у (зверху-вниз, знизу-вверх, справа-наліво, зліва-направо, діагонально) у сітці`arr`?
# --hints--
`largestGridProduct(testGrid)` має повернути число.
```js
assert(typeof largestGridProduct(testGrid) === 'number');
```
`largestGridProduct(testGrid)` має повернути число 14169081.
```js
assert.strictEqual(largestGridProduct(testGrid), 14169081);
```
`largestGridProduct(grid)` має повернути число 70600674.
```js
assert.strictEqual(largestGridProduct(grid), 70600674);
```
# --seed--
## --seed-contents--
```js
function largestGridProduct(arr) {
return true;
}
// Only change code above this line
const grid = [
[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0],
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65],
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80],
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50],
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70],
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21],
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72],
[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],
[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],
[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57],
[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],
[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40],
[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],
[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69],
[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36],
[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16],
[20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54],
[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48]
];
const testGrid = [
[40, 17, 81, 18, 57],
[74, 4, 36, 16, 29],
[36, 42, 69, 73, 45],
[51, 54, 69, 16, 92],
[7, 97, 57, 32, 16]
];
largestGridProduct(testGrid);
```
# --solutions--
```js
function largestGridProduct(arr) {
let maxProduct = 0;
let currProduct = 0;
function maxProductChecker(n) {
if (n > maxProduct) {
return maxProduct = n;
}
}
// loop rows
for (let r = 0; r < arr.length; r++) {
// loop columns
for (let c = 0; c < arr[r].length; c++) {
const limit = arr[r].length - 3;
// check horizontal
if (c < limit) {
currProduct = arr[r][c] * arr[r][c + 1] * arr[r][c + 2] * arr[r][c + 3];
maxProductChecker(currProduct);
}
// check vertical
if (r < limit) {
currProduct = arr[r][c] * arr[r + 1][c] * arr[r + 2][c] * arr[r + 3][c];
maxProductChecker(currProduct);
}
// check diagonal [\]
if (c < limit && r < limit) {
currProduct = arr[r][c] * arr[r + 1][c + 1] * arr[r + 2][c + 2] * arr[r + 3][c + 3];
maxProductChecker(currProduct);
}
// check diagonal [/]
if (c > 3 && r < limit) {
currProduct = arr[r][c] * arr[r + 1][c - 1] * arr[r + 2][c - 2] * arr[r + 3][c - 3];
maxProductChecker(currProduct);
}
}
}
return maxProduct;
}
const grid = [ [8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0],
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65],
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80],
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50],
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70],
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21],
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72],
[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],
[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],
[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57],
[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],
[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40],
[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],
[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69],
[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36],
[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16],
[20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54],
[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48]
];
const testGrid = [
[40, 17, 81, 18, 57],
[74, 4, 36, 16, 29],
[36, 42, 69, 73, 45],
[51, 54, 69, 16, 92],
[7, 97, 57, 32, 16]
];
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3db1000cf542c50feed
title: 'Задача 110: Діофантові обернені числа. Частина 2'
challengeType: 5
forumTopicId: 301735
dashedName: problem-110-diophantine-reciprocals-ii
---
# --description--
У наступному рівнянні x, y та n є цілими натуральними числами.
$$\дріб{1}{x} + \дріб{1}{y} = \дріб{1}{n}$$
Можна перевірити, що коли `n` = 1260 існує 113 різних рішень, і це найменше значення `n`, для якого загальна кількість різних рішень перевищує сотню.
Яке найменше значення `n`, для якого кількість окремих рішень перевищує чотири мільйони?
**Примітка:** Ця проблема є набагато складнішою версією Задачі 108, оскільки вона виходить за межі обмежень підходу грубої сили, вона вимагає розумної реалізації.
# --hints--
`diophantineTwo()` має повертати `9350130049860600`.
```js
assert.strictEqual(diophantineTwo(), 9350130049860600);
```
# --seed--
## --seed-contents--
```js
function diophantineTwo() {
return true;
}
diophantineTwo();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,61 @@
---
id: 5900f3db1000cf542c50feee
title: 'Задача 111: Прості числа з прогонами'
challengeType: 5
forumTopicId: 301736
dashedName: problem-111-primes-with-runs
---
# --description--
Розглядаючи чотиризначні прості числа, що містять повторювані цифри, стає зрозумілим, що вони не можуть бути однаковими: 1111 ділиться на 11, 2222 ділиться на 22 тощо. Але є дев’ять 4-значних простих чисел, що містять три одиниці:
$$1117, 1151, 1171, 1181, 1511, 1811, 2111, 4111, 8111$$
Ми можемо сказати, що $M(n, d)$ являє собою максимальну кількість повторюваних цифр для n-значного простого числа, де d-повторювана цифра, в той час як $N(n, d)$ - це кількість таких простих чисел, а $S(n, d)$ - сума цих простих чисел.
Отже, $M(4, 1) = 3$ - це максимальна кількість повторюваних цифр для 4-значного простого числа, де одна з них повторювана цифра, є прості числа $N(4, 1) = 9$, а сума цих простих чисел $S(4, 1) = 22275 $. Виявляється, що при d = 0, можливо лише $M(4, 0) = 2$ повторюваних цифр, але таких випадків лише $N(4, 0) = 13$.
Таким же чином, ми отримуємо наступні результати для 4-значних простих чисел.
| Число, d | $M(4, d)$ | $N(4, d)$ | $S(4, d)$ |
| -------- | --------- | --------- | --------- |
| 0 | 2 | 13 | 67061 |
| 1 | 3 | 9 | 22275 |
| 2 | 3 | 1 | 2221 |
| 3 | 3 | 12 | 46214 |
| 4 | 3 | 2 | 8888 |
| 5 | 3 | 1 | 5557 |
| 6 | 3 | 1 | 6661 |
| 7 | 3 | 9 | 57863 |
| 8 | 3 | 1 | 8887 |
| 9 | 3 | 7 | 48073 |
Для d = від 0 до 9 сума всіх $S (4, d)$ дорівнює 273700. Знайдіть суму всіх $S(10, d)$.
# --hints--
`primesWithRuns ()` має повертати `612407567715`.
```js
assert.strictEqual(primesWithRuns(), 612407567715);
```
# --seed--
## --seed-contents--
```js
function primesWithRuns() {
return true;
}
primesWithRuns();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,48 @@
---
id: 5900f3dd1000cf542c50feef
title: 'Завдання 112: стрибучі числа'
challengeType: 5
forumTopicId: 301738
dashedName: problem-112-bouncy-numbers
---
# --description--
Якщо, читаючи число зліва направо, жодна цифра не перевищує цифру праворуч від неї, таке число називається зростаючим; наприклад, 134468.
Таким же чином, якщо жодна цифра не перевищує цифру зліва від неї, число називається спадним; наприклад, 66420.
Назвемо натуральне число, яке не є ні зростаючим, ні спадним, "стрибучим" числом; наприклад, 155349.
Очевидно, що стрибучі числа не можуть бути меншими за сотні. Трохи більше половини чисел, що менші за одну тисячу (525), є стрибучими. Насправді ж, найменшим числом, для якого частка стрибучих чисел відразу досягає 50%, є число 538.
Як не дивно, стрибучі числа зустрічаються все частіше і частіше, і до моменту досягнення числа 21780 частка стрибучих чисел становить 90%.
Знайдіть найменше число, для якого частка стрибучих чисел дорівнює 99%.
# --hints--
`bouncyNumbers()` повинні повертатися як `1587000`.
```js
assert.strictEqual(bouncyNumbers(), 1587000);
```
# --seed--
## --seed-contents--
```js
function bouncyNumbers() {
return true;
}
bouncyNumbers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3dd1000cf542c50fef0
title: 'Завдання 113: Нестрибучі числа'
challengeType: 5
forumTopicId: 301739
dashedName: problem-113-non-bouncy-numbers
---
# --description--
Якщо, читаючи число зліва направо, жодна цифра не перевищує цифру праворуч від неї, таке число називається зростаючим; наприклад, 134468.
Таким же чином, якщо жодна цифра не перевищує цифру зліва від неї, число називається спадним; наприклад, 66420.
Назвемо натуральне число, яке не є ні зростаючим, ні спадним, "стрибучим" числом; наприклад, 155349.
При збільшенні n збільшується пропорція стрибучих чисел менше n. Таким чином, існує тільки 12951 нестрибучих чисел до мільйона, і тільки 277 032 нестрибучих чисел нижче ${10}^{10}$.
Скільки чисел менше гугола (${10}^{100}$) не є "стрибучими"?
# --hints--
`nonBouncyNumbers()` повинен повертатися як `51161058134250`.
```js
assert.strictEqual(nonBouncyNumbers(), 51161058134250);
```
# --seed--
## --seed-contents--
```js
function nonBouncyNumbers() {
return true;
}
nonBouncyNumbers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3e01000cf542c50fef2
title: 'Завдання 114: Підрахунок комбінацій блоків І'
challengeType: 5
forumTopicId: 301740
dashedName: problem-114-counting-block-combinations-i
---
# --description--
Рядок завдовжки сім одиниць містить червоні блоки, мінімальна довжина яких становить три одиниці, тому будь-які два червоні блоки (які можуть бути будь-якої довжини) розділені принаймні одним червоним квадратом. Є рівно 17 способів зробити це.
<img class="img-responsive center-block" alt="Можливі способи розміщення кубиків з мінімальною довжиною у три одиниці у рядку довжиною сім одиниць" src="https://cdn.freecodecamp.org/curriculum/project-euler/counting-block-combinations-i.png" style="background-color: white; padding: 10px;" />
Скількома способами можна заповнити ряд довжиною 50 одиниць?
**Примітка:** Хоча наведений вище приклад не дає такої можливості, загалом дозволяється змішувати розміри блоків. Наприклад, у рядку довжиною вісім одиниць можна використати червоний (3), чорний (1) та червоний (4).
# --hints--
`countingBlockOne()` повинен повертатися як `16475640049`.
```js
assert.strictEqual(countingBlockOne(), 16475640049);
```
# --seed--
## --seed-contents--
```js
function countingBlockOne() {
return true;
}
countingBlockOne();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,50 @@
---
id: 5900f3df1000cf542c50fef1
title: 'Завдання 115: Підрахунок комбінацій блоків ІІ'
challengeType: 5
forumTopicId: 301741
dashedName: problem-115-counting-block-combinations-ii
---
# --description--
Рядок довжиною `n` одиниць містить червоні блоки з мінімальною довжиною `m` одиниць, тому будь-які два червоні блоки (які можуть бути будь-якої довжини) розділені як мінімум одним чорним квадратом.
Нехай функція підрахунку $F(m, n)$ представляє кількість способів заповнення рядка.
Наприклад, $F(3, 29) = 673135$ та $F(3, 30) = 1089155$.
Тобто для m = 3 видно, що n = 30 — це найменше значення, для якого функція fill-count перевищує один мільйон.
Точно так само для m = 10 можна перевірити, що $F(10, 56) = 880711$ та $F(10, 57) = 1148904$, то ж n = 57 — це найменше значення, для якого функція fill-count перевищує один мільйон.
Для m = 50, знайдіть найменше значення `n`, для якого функція fill-count спочатку перевищує один мільйон.
**Примітка:** Це — складніша версія Завдання 114.
# --hints--
`countingBlockTwo()` повинен повертатися як `168`.
```js
assert.strictEqual(countingBlockTwo(), 168);
```
# --seed--
## --seed-contents--
```js
function countingBlockTwo() {
return true;
}
countingBlockTwo();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,54 @@
---
id: 5900f3e01000cf542c50fef3
title: 'Завдання 116: Червоні, зелені та сині комірки'
challengeType: 5
forumTopicId: 301742
dashedName: problem-116-red-green-or-blue-tiles
---
# --description--
Ряд із п'яти чорних квадратних комірок повинен бути замінений на кольорові довгасті комірки: червоні (2 одиниці), зелені (3 одиниці) або ж сині (4 одиниці).
Якщо вибрати червоні комірки, є рівно 7 способів це зробити.
<img class="img-responsive center-block" alt="Можливі способи розміщення червоних комірок у ряд довжиною п'ять одиниць" src="https://cdn.freecodecamp.org/curriculum/project-euler/red-green-or-blue-tiles-1.png" style="background-color: white; padding: 10px;" />
Якщо вибрати зелені комірки, є три способи.
<img class="img-responsive center-block" alt="Можливі способи розміщення зелених комірок у ряд довжиною п'ять одиниць" src="https://cdn.freecodecamp.org/curriculum/project-euler/red-green-or-blue-tiles-2.png" style="background-color: white; padding: 10px;" />
І якщо вибрати сині комірки, маємо 2 способи.
<img class="img-responsive center-block" alt="Можливі способи розміщення синіх комірок у ряд довжиною п'ять одиниць" src="https://cdn.freecodecamp.org/curriculum/project-euler/red-green-or-blue-tiles-3.png" style="background-color: white; padding: 10px;" />
Припустимо, що кольори не можуть бути змішаними, тоді існує 7 + 3 + 2 = 12 способів заміни чорних комірок в рядку довжиною п'ять одиниць. Скількома різними способами можна замінити чорні комірки у рядку довжиною п’ятдесят одиниць, якщо кольори не можна змішувати та необхідно використати хоча б одну кольорову плитку?
**Примітка:** Це пов'язано із завданням 117.
# --hints--
`redGreenBlueOne()`should return`20492570929`.
```js
assert.strictEqual(redGreenBlueOne(), 20492570929);
```
# --seed--
## --seed-contents--
```js
function redGreenBlueOne() {
return true;
}
redGreenBlueOne();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3e21000cf542c50fef4
title: 'Завдання 117: Червоні, зелені та сині комірки'
challengeType: 5
forumTopicId: 301743
dashedName: problem-117-red-green-and-blue-tiles
---
# --description--
Використовуючи комбінацію чорних квадратних комірок і довгастих комірок, вибраних з: червоних комірок розміром дві одиниці, зелених комірок розміром три одиниці та синіх комірок розміром чотири одиниці, можна створити ряд довжиною п'ять одиниць рівно п'ятнадцятьма різними способами.
<img class="img-responsive center-block" alt="Можливі способи розміщення червоних, зелених і синіх довгастих комірок ряду довжиною в п'ять одиниць" src="https://cdn.freecodecamp.org/curriculum/project-euler/red-green-and-blue-tiles.png" style="background-color: white; padding: 10px;" />
Скількома способами можна викласти ряд довжиною 50 одиниць?
**Примітка**: Це пов'язано з завданням 116.
# --hints--
`redGreenBlueTilesTwo()` should return `100808458960497`.
```js
assert.strictEqual(redGreenBlueTilesTwo(), 100808458960497);
```
# --seed--
## --seed-contents--
```js
function redGreenBlueTilesTwo() {
return true;
}
redGreenBlueTilesTwo();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,40 @@
---
id: 5900f3e21000cf542c50fef5
title: 'Задача 118: Цифрові прості числа'
challengeType: 5
forumTopicId: 301744
dashedName: problem-118-pandigital-prime-sets
---
# --description--
Використовуючи всі цифри від 1 до 9 і вільно їх об'єднуючи для формування десяткових цілих чисел, можна формувати різні набори. Цікаво, що $\\{2, 5, 47, 89, 631\\}$ є простими числами.
Скільки різних наборів, що містять кожну з цифр від однієї до дев’яти, точно хоча б один раз містять лише прості елементи?
# --hints--
`pandigitalPrimeSets()` має повертати `44680`.
```js
assert.strictEqual(pandigitalPrimeSets(), 44680);
```
# --seed--
## --seed-contents--
```js
function pandigitalPrimeSets() {
return true;
}
pandigitalPrimeSets();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3e41000cf542c50fef6
title: 'Задача 119: Сума чисел'
challengeType: 5
forumTopicId: 301745
dashedName: problem-119-digit-power-sum
---
# --description--
Число 512 цікаве тим, що воно дорівнює сумі його цифр, зведених у десяткову ступінь: $5 + 1 + 2 = 8$, і $8^3 = 512$. Інший приклад числа з цією властивістю - $614656 = 28^4$.
Ми визначимо $a_n$ як $n-th$ член цієї послідовності і наполягатимемо на тому, що число повинне містити щонайменше дві цифри, щоб мати суму.
Вам дано, що $a_2 = 512$ і $a_{10} = 614656$.
Знайдіть $a_{30}$.
# --hints--
`digitPowerSum()` повинен повертатися як `248155780267521`.
```js
assert.strictEqual(digitPowerSum(), 248155780267521);
```
# --seed--
## --seed-contents--
```js
function digitPowerSum() {
return true;
}
digitPowerSum();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,139 @@
---
id: 5900f3781000cf542c50fe8b
title: 'Завдання 12: Дільники трикутного числа'
challengeType: 5
forumTopicId: 301746
dashedName: problem-12-highly-divisible-triangular-number
---
# --description--
Послідовність трикутних чисел утворюється додаванням натуральних чисел. Отже, 7-е трикутне число буде 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Перші десять членів послідовності:
<div style='text-align: center;'>1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...</div>
Перерахуємо множники перших семи трикутних чисел:
<div style='padding-left: 4em;'><b>1:</b> 1</div>
<div style='padding-left: 4em;'><b>3:</b> 1, 3</div>
<div style='padding-left: 4em;'><b>6:</b> 1, 2, 3, 6</div>
<div style='padding-left: 4em;'><b>10:</b> 1, 2, 5, 10</div>
<div style='padding-left: 4em;'><b>15:</b> 1, 3, 5, 15</div>
<div style='padding-left: 4em;'><b>21:</b> 1, 3, 7, 21</div>
<div style='padding-left: 4em;'><b>28:</b> 1, 2, 4, 7, 14, 28</div>
Бачимо, що 28 є першим трикутним числом, яке має більше п'яти дільників.
Яке значення першого трикутного числа, що має більше `n` дільників?
# --hints--
`divisibleTriangleNumber(5)` має повернути число.
```js
assert(typeof divisibleTriangleNumber(5) === 'number');
```
`divisibleTriangleNumber(5)` повертає 28.
```js
assert.strictEqual(divisibleTriangleNumber(5), 28);
```
`divisibleTriangleNumber(23)` повертає 630.
```js
assert.strictEqual(divisibleTriangleNumber(23), 630);
```
`divisibleTriangleNumber(167)` повертає 1385280.
```js
assert.strictEqual(divisibleTriangleNumber(167), 1385280);
```
`divisibleTriangleNumber(374)` повертає 17907120.
```js
assert.strictEqual(divisibleTriangleNumber(374), 17907120);
```
`divisibleTriangleNumber(500)` повертає 76576500.
```js
assert.strictEqual(divisibleTriangleNumber(500), 76576500);
```
# --seed--
## --seed-contents--
```js
function divisibleTriangleNumber(n) {
return true;
}
divisibleTriangleNumber(500);
```
# --solutions--
```js
function divisibleTriangleNumber(n) {
if (n === 1) return 3;
let counter = 1;
let triangleNumber = counter++;
while (noOfFactors(triangleNumber) < n) {
triangleNumber += counter++;
}
return triangleNumber;
}
function noOfFactors(num) {
const primeFactors = getPrimeFactors(num);
let prod = 1;
for(let p in primeFactors) {
prod *= (primeFactors[p] + 1)
}
return prod;
}
function getPrimeFactors(num) {
let n = num;
let primes = {};
let p = 2;
let sqrt = Math.sqrt(num);
function checkAndUpdate(inc) {
if (n % p === 0) {
const curr = primes[p];
if (curr) {
primes[p]++
} else {
primes[p] = 1;
}
n /= p;
} else {
p += inc;
}
}
while(p === 2 && p <= n) {
checkAndUpdate(1);
}
while (p <= n && p <= sqrt) {
checkAndUpdate(2);
}
if(Object.keys(primes).length === 0) {
primes[num] = 1;
} else if(n !== 1) {
primes[n] = 1;
}
return primes;
}
```

View File

@ -0,0 +1,42 @@
---
id: 5900f3e41000cf542c50fef7
title: 'Завдання 120: Квадратні остачі'
challengeType: 5
forumTopicId: 301747
dashedName: problem-120-square-remainders
---
# --description--
Нехай `r` буде остачею при діленні ${(a 1)}^n + {(a + 1)}^n$ на $a^2$.
Наприклад, якщо $a = 7$ і $n = 3$, тоді $r = 42: 6^3 + 8^3 = 728 ≡ 42 \\ \text{mod}\\ 49$. І оскільки змінюється `n`, те ж відбувається і з `r`, але для $a = 7$ виходить так, що $r_{max} = 42$.
Знайдіть $\sum{r}_{max}$ для 3 ≤ a ≤ 1000$.
# --hints--
`squareRemainders()` має вивести `333082500`.
```js
assert.strictEqual(squareRemainders(), 333082500);
```
# --seed--
## --seed-contents--
```js
function squareRemainders() {
return true;
}
squareRemainders();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3e51000cf542c50fef8
title: 'Завдання 121: Призовий фонд гри з дисками'
challengeType: 5
forumTopicId: 301748
dashedName: problem-121-disc-game-prize-fund
---
# --description--
У торбі лежать один червоний диск і один синій диск. У грі на вдачу гравець навмання дістає один диск і відзначає його колір. Після кожного ходу диск повертається в торбу, куди додається ще додатковий червоний диск, і знову потрібно навмання дістати інший диск.
Гравець платить £1 за гру і виграє, якщо до кінця гри дістає більше синіх дисків, ніж червоних.
Якщо гра складається з чотирьох ходів, ймовірність виграшу для гравця становить 11/120, тому максимальний призовий фонд в даному випадку повинен складати £10, щоб не зазнати збитків. Зверніть увагу, що будь-яка виплата проводиться цілим числом фунтів стерлінгів, а також включає в себе вартість гри в розмірі £1, так що в даному прикладі гравець насправді виграє £9.
Знайдіть максимальний призовий фонд, який треба виділити для однієї гри з п'ятнадцятьма ходами.
# --hints--
`discGamePrize()` повинен повертатися як `2269`.
```js
assert.strictEqual(discGamePrize(), 2269);
```
# --seed--
## --seed-contents--
```js
function discGamePrize() {
return true;
}
discGamePrize();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,52 @@
---
id: 5900f3e61000cf542c50fef9
title: 'Завдання 122: Ефективний метод піднесення до степеня'
challengeType: 5
forumTopicId: 301749
dashedName: problem-122-efficient-exponentiation
---
# --description--
Найпростіший спосіб обчислення $n^{15}$ вимагає виконання 14 множень:
$$n × n × \ldots × n = n^{15}$$
Якщо скористатися "двійковим" методом, можна обчислити, виконавши 6 множень:
$$\begin{align} & n × n = n^2\\\\ & n^2 × n^2 = n^4\\\\ & n^4 × n^4 = n^8\\\\ & n^8 × n^4 = n^{12}\\\\ & n^{12} × n^2 = n^{14}\\\\ & n^{14} × n = n^{15} \end{align}$$
Проте кількість множень ще можна зменшити до 5:
$$\begin{align} & n × n = n^2\\\\ & n^2 × n = n^3\\\\ & n^3 × n^3 = n^6\\\\ & n^6 × n^6 = n^{12}\\\\ & n^{12} × n^3 = n^{15} \end{align}$$
Визначаємо $m(k)$ як мінімальну кількість множень для обчислення $n^k$. Наприклад, $m(15) = 5$.
Знайдіть $\sum{m(k)}$ для $1 ≤ k ≤ 200$.
# --hints--
`efficientExponentation()` має повернути `1582`.
```js
assert.strictEqual(efficientExponentation(), 1582);
```
# --seed--
## --seed-contents--
```js
function efficientExponentation() {
return true;
}
efficientExponentation();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3e71000cf542c50fefa
title: 'Завдання 123: Прості квадратні остачі'
challengeType: 5
forumTopicId: 301750
dashedName: problem-123-prime-square-remainders
---
# --description--
Нехай $p_n$ $n$ - просте число: 2, 3, 5, 7, 11, ..., і нехай $r$ - остача, коли ${(p_n 1)}^n + {(p_n + 1)}^n$ ділиться на ${p_n}^2$.
Наприклад, коли $n = 3, p_3 = 5$ і $4^3 + 6^3 = 280 ≡ 5\\ mod\\ 25$.
Найменше значення $n$, для якого остача спочатку перевищує $10^9$, становить 7037.
Знайдіть найменше значення $n$, для якого остача спочатку перевищує $10^{10}$.
# --hints--
`primeSquareRemainders()` повинен повернути `21035`.
```js
assert.strictEqual(primeSquareRemainders(), 21035);
```
# --seed--
## --seed-contents--
```js
function primeSquareRemainders() {
return true;
}
primeSquareRemainders();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,42 @@
---
id: 5900f3e91000cf542c50fefc
title: 'Задача 125: Сума цифр числа паліндром'
challengeType: 5
forumTopicId: 301752
dashedName: problem-125-palindromic-sums
---
# --description--
Паліндромне число 595 цікаве тим, що його можна записати як суму послідовних квадратів: $6^2 + 7^2 + 8^2 + 9^2 + 10^2 + 11^2 + 12^2$.
Існує рівно одинадцять паліндромів менших за одну тисячу, які можна записати як послідовність суми квадратів, і сума цифр цих паліндромів дорівнює 4164. Зауважте, що число $1 = 0^2 + 1^2$ не було враховане, оскільки ця задача стосується квадратів лише натуральних чисел.
Знайдіть суму всіх чисел, менших ніж $10^8$, які є одночасно паліндромами і можуть бути записані як сума послідовних квадратів.
# --hints--
`palindromicSums()` має повернути `2906969179`.
```js
assert.strictEqual(palindromicSums(), 2906969179);
```
# --seed--
## --seed-contents--
```js
function palindromicSums() {
return true;
}
palindromicSums();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,50 @@
---
id: 5900f3ea1000cf542c50fefd
title: 'Завдання 126: Шари кубоїдів'
challengeType: 5
forumTopicId: 301753
dashedName: problem-126-cuboid-layers
---
# --description--
Мінімальна кількість кубів, що охоплюють кожну видиму грань кубоїда розміром 3 x 2 x 1, становить двадцять два.
<img class="img-responsive center-block" alt="Кубоїд 3x2x1, покритий двадцятьма двома кубиками 1x1x1" src="https://cdn.freecodecamp.org/curriculum/project-euler/cuboid-layers.png" style="background-color: white; padding: 10px;" />
Якщо ми додамо другий шар до цього блоку, то для покриття кожної видимої грані знадобиться сорок шість кубів, для третього шару знадобиться сімдесят вісім кубиків, а для четвертого шару знадобиться сто вісімнадцять кубів, щоб покрити кожну видиму грань.
Однак перший шар на кубоїді розміром 5 x 1 x 1 також вимагає двадцяти двох кубів; так само перший шар на кубоїдах розмірами 5 x 3 x 1, 7 x 2 x 1 та 11 x 1 x 1 містить усі сорок шість кубів.
Визначимо $C(n)$, щоб показати кількість кубоїдів, які містять $n$ кубів в одному зі своїх шарів. Отже, $C(22) = 2$, $C(46) = 4$, $C(78) = 5$ і $C(118) = 8$.
Виявляється, що 154 - це найменше значення для $n$, для якого $C(n) = 10$.
Знайдіть найменше значення $n$, для якого $C(n) = 1000$.
# --hints--
`cuboidLayers()` повинен повернути `18522`.
```js
assert.strictEqual(cuboidLayers(), 18522);
```
# --seed--
## --seed-contents--
```js
function cuboidLayers() {
return true;
}
cuboidLayers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,56 @@
---
id: 5900f3ec1000cf542c50fefe
title: 'Завдання 127: abc-збіги'
challengeType: 5
forumTopicId: 301754
dashedName: problem-127-abc-hits
---
# --description--
Радикалом числа $n$, $rad(n)$ називають добуток простих множників $n$. Наприклад, $504 = 2^3 × 3^2 × 7$, отже $rad(504) = 2 × 7 = 42$.
Нехай число-триплет з додатними цілими числами (a, b, c) abc-збіг, якщо:
1. $GCD(a, b) = GCD(a, c) = GCD(b, c) = 1$
2. $a &lt; b$
3. $a + b = c$
4. $rad(abc) &lt; c$
Наприклад, (5, 27, 32) - це abc-збіг, тому що:
1. $GCD(5, 27) = GCD(5, 32) = GCD(27, 32) = 1$
2. $5 &lt; 27$
3. $5 + 27 = 32$
4. $rad(4320) = 30 &lt; 32$
Виявляється, abc-збіги - досить рідкісні і існує тільки 31 abc-збігів для $c &lt; 1000$, with $\sum{c} = 12523$.
Знайдіть $\sum{c}$ для $c &lt; 120000$.
# --hints--
`abcHits()` повинен повертатися як `18407904`.
```js
assert.strictEqual(abcHits(), 18407904);
```
# --seed--
## --seed-contents--
```js
function abcHits() {
return true;
}
abcHits();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,54 @@
---
id: 5900f3ec1000cf542c50feff
title: 'Завдання 128: Різниці шестикутних плиток'
challengeType: 5
forumTopicId: 301755
dashedName: problem-128-hexagonal-tile-differences
---
# --description--
Шестикутна плитка з числом 1 оточена кільцем із шести шестикутних плиток, які, починаючи із «12-ї години», пронумеровані від 2 до 7 у напрямку проти годинникової стрілки.
Нові кільця додані так само, і пронумеровані від 8 до 19, від 20 до 37, від 38 до 61 і так далі. Подана нижче діаграма показує перші три кільця.
<img class="img-responsive center-block" alt="перші три кільця упорядкованих шестикутних плиток з числами від 1 до 37 і з виділеними плитками 8 та 17" src="https://cdn.freecodecamp.org/curriculum/project-euler/hexagonal-tile-differences.png" style="background-color: white; padding: 10px;" />
Знайшовши різницю між плиткою $n$ та кожним із її шести сусідів, визначимо $PD(n)$ як кількість тих різниць, які є простими.
Наприклад, працюючи за годинниковою стрілкою навколо клітинки 8, різницями є 12, 29, 11, 6, 1 та 13. Отже $PD(8) = 3$.
Точно так само різницями навколо плитки 17 є 1, 17, 16, 1, 11 та 10, тому $PD(17) = 2$.
Можна показати, що максимальним значенням $PD(n)$ є $3$.
Якщо всі плитки, для яких $PD(n) = 3$, перераховані в порядку зростання для формування послідовності, то 10-та плитка буде 271.
Знайдіть 2000-ну плитку в цій послідовності.
# --hints--
`hexagonalTile()` повинен повернути `14516824220`.
```js
assert.strictEqual(hexagonalTile(), 14516824220);
```
# --seed--
## --seed-contents--
```js
function hexagonalTile() {
return true;
}
hexagonalTile();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3ef1000cf542c50ff01
title: 'Завдання 129: Подільність реп''юніта'
challengeType: 5
forumTopicId: 301756
dashedName: problem-129-repunit-divisibility
---
# --description--
Число, що повністю складається з одиниць, називається реп'юнітом. Визначимо, що $R(k)$ є реп'юнітом довжини $k$; наприклад, $R(6) = 111111$.
Враховуючи, що $n$ є цілим додатним числом і $GCD(n, 10) = 1$, можна бачити, що завжди існує значення $k$, для якого $R(k)$ ділиться на $n$, і нехай $A(n)$ буде найменшим таким значенням $k$; наприклад, $A(7) = 6$ і $A(41) = 5$.
Найменше значення $n$, для якого $A(n)$ спочатку перевищує десять, дорівнює 17.
Знайдіть найменше значення $n$, для якого $A(n)$ спочатку перевищує мільйон.
# --hints--
`repunitDivisibility()` повинен повернути `1000023`.
```js
assert.strictEqual(repunitDivisibility(), 1000023);
```
# --seed--
## --seed-contents--
```js
function repunitDivisibility() {
return true;
}
repunitDivisibility();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,286 @@
---
id: 5900f37a1000cf542c50fe8c
title: 'Завдання 13: Велика сума'
challengeType: 5
forumTopicId: 301757
dashedName: problem-13-large-sum
---
# --description--
Опрацюйте перші десять цифр суми наступних ста 50-значних чисел.
<div style='padding-left: 4em;'>
37107287533902102798797998220837590246510135740250<br>
46376937677490009712648124896970078050417018260538<br>
74324986199524741059474233309513058123726617309629<br>
91942213363574161572522430563301811072406154908250<br>
23067588207539346171171980310421047513778063246676<br>
89261670696623633820136378418383684178734361726757<br>
28112879812849979408065481931592621691275889832738<br>
44274228917432520321923589422876796487670272189318<br>
47451445736001306439091167216856844588711603153276<br>
70386486105843025439939619828917593665686757934951<br>
62176457141856560629502157223196586755079324193331<br>
64906352462741904929101432445813822663347944758178<br>
92575867718337217661963751590579239728245598838407<br>
58203565325359399008402633568948830189458628227828<br>
80181199384826282014278194139940567587151170094390<br>
35398664372827112653829987240784473053190104293586<br>
86515506006295864861532075273371959191420517255829<br>
71693888707715466499115593487603532921714970056938<br>
54370070576826684624621495650076471787294438377604<br>
53282654108756828443191190634694037855217779295145<br>
36123272525000296071075082563815656710885258350721<br>
45876576172410976447339110607218265236877223636045<br>
17423706905851860660448207621209813287860733969412<br>
81142660418086830619328460811191061556940512689692<br>
51934325451728388641918047049293215058642563049483<br>
62467221648435076201727918039944693004732956340691<br>
15732444386908125794514089057706229429197107928209<br>
55037687525678773091862540744969844508330393682126<br>
18336384825330154686196124348767681297534375946515<br>
80386287592878490201521685554828717201219257766954<br>
78182833757993103614740356856449095527097864797581<br>
16726320100436897842553539920931837441497806860984<br>
48403098129077791799088218795327364475675590848030<br>
87086987551392711854517078544161852424320693150332<br>
59959406895756536782107074926966537676326235447210<br>
69793950679652694742597709739166693763042633987085<br>
41052684708299085211399427365734116182760315001271<br>
65378607361501080857009149939512557028198746004375<br>
35829035317434717326932123578154982629742552737307<br>
94953759765105305946966067683156574377167401875275<br>
88902802571733229619176668713819931811048770190271<br>
25267680276078003013678680992525463401061632866526<br>
36270218540497705585629946580636237993140746255962<br>
24074486908231174977792365466257246923322810917141<br>
91430288197103288597806669760892938638285025333403<br>
34413065578016127815921815005561868836468420090470<br>
23053081172816430487623791969842487255036638784583<br>
11487696932154902810424020138335124462181441773470<br>
63783299490636259666498587618221225225512486764533<br>
67720186971698544312419572409913959008952310058822<br>
95548255300263520781532296796249481641953868218774<br>
76085327132285723110424803456124867697064507995236<br>
37774242535411291684276865538926205024910326572967<br>
23701913275725675285653248258265463092207058596522<br>
29798860272258331913126375147341994889534765745501<br>
18495701454879288984856827726077713721403798879715<br>
38298203783031473527721580348144513491373226651381<br>
34829543829199918180278916522431027392251122869539<br>
40957953066405232632538044100059654939159879593635<br>
29746152185502371307642255121183693803580388584903<br>
41698116222072977186158236678424689157993532961922<br>
62467957194401269043877107275048102390895523597457<br>
23189706772547915061505504953922979530901129967519<br>
86188088225875314529584099251203829009407770775672<br>
11306739708304724483816533873502340845647058077308<br>
82959174767140363198008187129011875491310547126581<br>
97623331044818386269515456334926366572897563400500<br>
42846280183517070527831839425882145521227251250327<br>
55121603546981200581762165212827652751691296897789<br>
32238195734329339946437501907836945765883352399886<br>
75506164965184775180738168837861091527357929701337<br>
62177842752192623401942399639168044983993173312731<br>
32924185707147349566916674687634660915035914677504<br>
99518671430235219628894890102423325116913619626622<br>
73267460800591547471830798392868535206946944540724<br>
76841822524674417161514036427982273348055556214818<br>
97142617910342598647204516893989422179826088076852<br>
87783646182799346313767754307809363333018982642090<br>
10848802521674670883215120185883543223812876952786<br>
71329612474782464538636993009049310363619763878039<br>
62184073572399794223406235393808339651327408011116<br>
66627891981488087797941876876144230030984490851411<br>
60661826293682836764744779239180335110989069790714<br>
85786944089552990653640447425576083659976645795096<br>
66024396409905389607120198219976047599490197230297<br>
64913982680032973156037120041377903785566085089252<br>
16730939319872750275468906903707539413042652315011<br>
94809377245048795150954100921645863754710598436791<br>
78639167021187492431995700641917969777599028300699<br>
15368713711936614952811305876380278410754449733078<br>
40789923115535562561142322423255033685442488917353<br>
44889911501440648020369068063960672322193204149535<br>
41503128880339536053299340368006977710650566631954<br>
81234880673210146739058568557934581403627822703280<br>
82616570773948327592232845941706525094512325230608<br>
22918802058777319719839450180888072429661980811197<br>
77158542502016545090413245809786882778948721859617<br>
72107838435069186155435662884062257473692284509516<br>
20849603980134001723930671666823555245252804609722<br>
53503534226472524250874054075591789781264330331690<br>
</div>
# --hints--
`largeSum(testNums)` має повернути число.
```js
assert(typeof largeSum(testNums) === 'number');
```
`largeSum(testNums)` має повернути 8348422521.
```js
assert.strictEqual(largeSum(testNums), 8348422521);
```
`largeSum(fiftyDigitNums)` має повернути 5537376230.
```js
assert.strictEqual(largeSum(fiftyDigitNums), 5537376230);
```
# --seed--
## --before-user-code--
```js
const fiftyDigitNums = [
'37107287533902102798797998220837590246510135740250',
'46376937677490009712648124896970078050417018260538',
'74324986199524741059474233309513058123726617309629',
'91942213363574161572522430563301811072406154908250',
'23067588207539346171171980310421047513778063246676',
'89261670696623633820136378418383684178734361726757',
'28112879812849979408065481931592621691275889832738',
'44274228917432520321923589422876796487670272189318',
'47451445736001306439091167216856844588711603153276',
'70386486105843025439939619828917593665686757934951',
'62176457141856560629502157223196586755079324193331',
'64906352462741904929101432445813822663347944758178',
'92575867718337217661963751590579239728245598838407',
'58203565325359399008402633568948830189458628227828',
'80181199384826282014278194139940567587151170094390',
'35398664372827112653829987240784473053190104293586',
'86515506006295864861532075273371959191420517255829',
'71693888707715466499115593487603532921714970056938',
'54370070576826684624621495650076471787294438377604',
'53282654108756828443191190634694037855217779295145',
'36123272525000296071075082563815656710885258350721',
'45876576172410976447339110607218265236877223636045',
'17423706905851860660448207621209813287860733969412',
'81142660418086830619328460811191061556940512689692',
'51934325451728388641918047049293215058642563049483',
'62467221648435076201727918039944693004732956340691',
'15732444386908125794514089057706229429197107928209',
'55037687525678773091862540744969844508330393682126',
'18336384825330154686196124348767681297534375946515',
'80386287592878490201521685554828717201219257766954',
'78182833757993103614740356856449095527097864797581',
'16726320100436897842553539920931837441497806860984',
'48403098129077791799088218795327364475675590848030',
'87086987551392711854517078544161852424320693150332',
'59959406895756536782107074926966537676326235447210',
'69793950679652694742597709739166693763042633987085',
'41052684708299085211399427365734116182760315001271',
'65378607361501080857009149939512557028198746004375',
'35829035317434717326932123578154982629742552737307',
'94953759765105305946966067683156574377167401875275',
'88902802571733229619176668713819931811048770190271',
'25267680276078003013678680992525463401061632866526',
'36270218540497705585629946580636237993140746255962',
'24074486908231174977792365466257246923322810917141',
'91430288197103288597806669760892938638285025333403',
'34413065578016127815921815005561868836468420090470',
'23053081172816430487623791969842487255036638784583',
'11487696932154902810424020138335124462181441773470',
'63783299490636259666498587618221225225512486764533',
'67720186971698544312419572409913959008952310058822',
'95548255300263520781532296796249481641953868218774',
'76085327132285723110424803456124867697064507995236',
'37774242535411291684276865538926205024910326572967',
'23701913275725675285653248258265463092207058596522',
'29798860272258331913126375147341994889534765745501',
'18495701454879288984856827726077713721403798879715',
'38298203783031473527721580348144513491373226651381',
'34829543829199918180278916522431027392251122869539',
'40957953066405232632538044100059654939159879593635',
'29746152185502371307642255121183693803580388584903',
'41698116222072977186158236678424689157993532961922',
'62467957194401269043877107275048102390895523597457',
'23189706772547915061505504953922979530901129967519',
'86188088225875314529584099251203829009407770775672',
'11306739708304724483816533873502340845647058077308',
'82959174767140363198008187129011875491310547126581',
'97623331044818386269515456334926366572897563400500',
'42846280183517070527831839425882145521227251250327',
'55121603546981200581762165212827652751691296897789',
'32238195734329339946437501907836945765883352399886',
'75506164965184775180738168837861091527357929701337',
'62177842752192623401942399639168044983993173312731',
'32924185707147349566916674687634660915035914677504',
'99518671430235219628894890102423325116913619626622',
'73267460800591547471830798392868535206946944540724',
'76841822524674417161514036427982273348055556214818',
'97142617910342598647204516893989422179826088076852',
'87783646182799346313767754307809363333018982642090',
'10848802521674670883215120185883543223812876952786',
'71329612474782464538636993009049310363619763878039',
'62184073572399794223406235393808339651327408011116',
'66627891981488087797941876876144230030984490851411',
'60661826293682836764744779239180335110989069790714',
'85786944089552990653640447425576083659976645795096',
'66024396409905389607120198219976047599490197230297',
'64913982680032973156037120041377903785566085089252',
'16730939319872750275468906903707539413042652315011',
'94809377245048795150954100921645863754710598436791',
'78639167021187492431995700641917969777599028300699',
'15368713711936614952811305876380278410754449733078',
'40789923115535562561142322423255033685442488917353',
'44889911501440648020369068063960672322193204149535',
'41503128880339536053299340368006977710650566631954',
'81234880673210146739058568557934581403627822703280',
'82616570773948327592232845941706525094512325230608',
'22918802058777319719839450180888072429661980811197',
'77158542502016545090413245809786882778948721859617',
'72107838435069186155435662884062257473692284509516',
'20849603980134001723930671666823555245252804609722',
'53503534226472524250874054075591789781264330331690'
];
const testNums = [
'37107287533902102798797998220837590246510135740250',
'46376937677490009712648124896970078050417018260538'
];
```
## --seed-contents--
```js
function largeSum(arr) {
return true;
}
// Only change code above this line
const testNums = [
'37107287533902102798797998220837590246510135740250',
'46376937677490009712648124896970078050417018260538'
];
largeSum(testNums);
```
# --solutions--
```js
function largeSum(arr) {
let sum = 0;
arr.forEach(function(num) {
sum += parseInt(num, 10);
});
sum = sum.toString(10);
sum = sum.substr(0, 1) + sum.substr(2);
let firstTen = sum.slice(0, 10);
return parseInt(firstTen, 10);
}
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3ee1000cf542c50ff00
title: 'Завдання 130: Складні числа з властивостями простих реп''юнітів'
challengeType: 5
forumTopicId: 301758
dashedName: problem-130-composites-with-prime-repunit-property
---
# --description--
Реп'юніти — числа, що складається лише з одиниць. Нехай $R(k)$ — реп'юніт, його довжина — $k$; наприклад, $R(6) = 111111$.
За умови, що $n$ — ціле додатнє число і $GCD(n, 10) = 1$, бачимо, що завжди існує значення $k$, для якого $R(k)$ ділиться на $n$, і нехай $A(n)$ буде найменшим таким значенням $k$; наприклад, $A(7) = 6$ і $A(41) = 5$.
Дано, що для всіх простих чисел $p > 5$, що $p - 1$ ділиться на $A(p)$. Наприклад, коли $p = 41, A(41) = 5$, а 40 ділиться на 5.
Однак, існує не багато складних чисел для яких справджується ця умова; перші п'ять прикладів - це 91, 259, 451, 481 і 703.
Знайдіть суму перших двадцяти п’яти складених значень $n$, для яких $GCD (n, 10) = 1$ і $n 1$ ділиться на $A(n)$.
# --hints--
`compositeRepunit()` повинен повертатись як `149253`.
```js
assert.strictEqual(compositeRepunit(), 149253);
```
# --seed--
## --seed-contents--
```js
function compositeRepunit() {
return true;
}
compositeRepunit();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3ef1000cf542c50ff02
title: 'Завдання 131: властивості куба простого числа'
challengeType: 5
forumTopicId: 301759
dashedName: problem-131-prime-cube-partnership
---
# --description--
Існують деякі прості значення ($p$), для яких існує таке ціле додатнє число ($n$), за яких вираз $n^3 + n^{2}p$ є ідеальним кубом.
Наприклад, якщо $p = 19,\\ 8^3 + 8^2 × 19 = {12}^3$.
Мабуть, найдивовижніше те, що значення $n$ є унікальним для кожного простого числа з цією властивістю, і таких простих чисел, що менші за сто, всього чотири.
Скільки простих чисел, що менші за один мільйон, мають цю вражаючу властивість?
# --hints--
Функція `primeCubePartnership()` має повертатися як `173`.
```js
assert.strictEqual(primeCubePartnership(), 173);
```
# --seed--
## --seed-contents--
```js
function primeCubePartnership() {
return true;
}
primeCubePartnership();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,42 @@
---
id: 5900f3f11000cf542c50ff03
title: 'Завдання 132: Великі множники реп’юнітів'
challengeType: 5
forumTopicId: 301760
dashedName: problem-132-large-repunit-factors
---
# --description--
Реп'юніт — число, що повністю складається з одиниць. Нехай $R(k) — реп'юніт з довжиною $k$.
Наприклад, $R(10) = 1111111111 = 11 × 41 × 271 × 9091$, а сума цих простих множників 9414.
Знайдіть суму перших сорока простих множників $R({10}^9)$.
# --hints--
`largeRepunitFactors()` становить `843296`.
```js
assert.strictEqual(largeRepunitFactors(), 843296);
```
# --seed--
## --seed-contents--
```js
function largeRepunitFactors() {
return true;
}
largeRepunitFactors();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3f21000cf542c50ff04
title: 'Завдання 133: Реп''юніти, на які не можна поділити націло'
challengeType: 5
forumTopicId: 301761
dashedName: problem-133-repunit-nonfactors
---
# --description--
Реп'юніт — число, що повністю складається з одиниць. Нехай $R(k)$ — реп'юніт з довжини $k$; наприклад, $R(6) = 111111$.
Давайте розглянемо реп'юніт: $R({10}^n)$.
Хоча $R(10)$, $R(100)$, або $R(1000)$ не ділиться на 17 націло, $R(10000)$ ділиться на 17. Однак немає значення n для яких $R({10}^n)$ ділиться на 19 націло. Пам'ятайте, що 11, 17, 41, та 73 — це єдині чотири простих числа менші ста, які можуть бути множниками $R({10}^n) $.
Знайдіть суму всіх простих чисел нижче ста тисяч, які не можуть бути множниками $R({10}^n)$.
# --hints--
`repunitNonfactors()` має повернути число `453647705`.
```js
assert.strictEqual(repunitNonfactors(), 453647705);
```
# --seed--
## --seed-contents--
```js
function repunitNonfactors() {
return true;
}
repunitNonfactors();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,42 @@
---
id: 5900f3f21000cf542c50ff05
title: 'Завдання 134: З’єднання простих чисел'
challengeType: 5
forumTopicId: 301762
dashedName: problem-134-prime-pair-connection
---
# --description--
Розглянемо наступні прості числа $p_1 = 19$ та $p_2 = 23$. Можна перевірити, що 1219 є найменшим числом, у якому останні цифри формуються $p_1$, а також ділиться на $p_2$.
Насправді, за винятком $p_1 = 3$ та $p_2 = 5$, для кожної пари наступних простих чисел $p_2 > p_1$, існують значення $n$, у яких останні цифри формуються $p_1$, а $n$ ділиться на $p_2$. Нехай $S$ — найменше із цих значень $n$.
Знайдіть $\sum{S}$ для кожної пари наступних простих чисел, якщо $5 ≤ p_1 ≤ 1000000$.
# --hints--
`primePairConnection()` повинно повертати число `18613426663617120`.
```js
assert.strictEqual(primePairConnection(), 18613426663617120);
```
# --seed--
## --seed-contents--
```js
function primePairConnection() {
return true;
}
primePairConnection();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3f31000cf542c50ff06
title: 'Завдання 135: Числа з подібною ознакою'
challengeType: 5
forumTopicId: 301763
dashedName: problem-135-same-differences
---
# --description--
Дано, цілі додатні числа, $x$, $y$, та $z$ є послідовними членами арифметичної прогресії; найменше значення натурального числа $n$, для якого рівняння $x^2 y^2 z^2 = n$ має два рішення, $n = 27$:
$$34^2 27^2 20^2 = 12^2 9^2 6^2 = 27$$
Виявляється, що $n = 1155$ — це найменше значення, яке можна отримати десятьма способами.
Скільки значень $n$ менших одного мільйона, можна знайти десятьма різними способами?
# --hints--
`sameDifferences()` повинен повернути число `4989`.
```js
assert.strictEqual(sameDifferences(), 4989);
```
# --seed--
## --seed-contents--
```js
function sameDifferences() {
return true;
}
sameDifferences();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f3f51000cf542c50ff07
title: 'Завдання 136: Рівняння з одним варіантом вирішення'
challengeType: 5
forumTopicId: 301764
dashedName: problem-136-singleton-difference
---
# --description--
Цілі додатні числа, $x$, $y$ і $z$, є послідовними членами арифметичної прогресії. Дано: $n$ — ціле додатнє число, рівняння $x^2 - y^2 - z^2 = n$ має одне рішення, якщо $n = 20$:
$$13^2 10^2 7^2 = 20$$
Існує двадцять п’ять значень $n$ нижче ста, для яких рівняння має одне рішення.
Скільки значень $n$, які менші за п’ятдесят мільйонів, мають рівно одне рішення?
# --hints--
`singletonDifference()` повинен повертати число `2544559`.
```js
assert.strictEqual(singletonDifference(), 2544559);
```
# --seed--
## --seed-contents--
```js
function singletonDifference() {
return true;
}
singletonDifference();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,58 @@
---
id: 5900f3f51000cf542c50ff08
title: 'Завдання 137: Золоті самородки Фібоначчі'
challengeType: 5
forumTopicId: 301765
dashedName: problem-137-fibonacci-golden-nuggets
---
# --description--
Розглянемо нескінченний поліноміальний ряд $A_{F}(x) = xF_1 + x^2F_2 + x^3F_3 + \ldots$, де $F_k$ — $k$й член послідовності Фібоначчі: $1, 2, 3, 5, 8, \ldots$; тобто, $F_k = F_{k - 1} + F_{k 2}, F_1 = 1$ та $F_2 = 1$.
Нас цікавлять значення $x$, для яких $A_{F}(x)$ є додатнім цілим числом.
Дивовижно,
$$\begin{align} A_F(\frac{1}{2}) & = (\frac{1}{2}) × 1 + {(\frac{1}{2})}^2 × 1 + {(\frac{1}{2})}^3 × 2 + {(\frac{1}{2})}^4 × 3 + {(\frac{1}{2})}^5 × 5 + \cdots \\\\ & = \frac{1}{2} + \frac{1}{4} + \frac{2}{8} + \frac{3}{16} + \frac{5}{32} + \cdots \\\\ & = 2 \end{align}$$
Відповідні значення $x$ для перших п'яти натуральних чисел наведено нижче.
| $x$ | $A_F(x)$ |
| --------------------------- | -------- |
| $\sqrt{2} - 1$ | $1$ |
| $\frac{1}{2}$ | $2$ |
| $\frac{\sqrt{13} 2}{3}$ | $3$ |
| $\frac{\sqrt{89} 5}{8}$ | $4$ |
| $\frac{\sqrt{34} 3}{5}$ | $5$ |
Назвемо $A_F(x)$ золотим самородком, якщо $x$ раціональне, оскільки вони трапляються дедалі рідше; наприклад, 10-й золотий самородок - 74049690.
Знайдіть 15-й золотий самородок.
# --hints--
`goldenNugget()` має повернути число `1120149658760`.
```js
assert.strictEqual(goldenNugget(), 1120149658760);
```
# --seed--
## --seed-contents--
```js
function goldenNugget() {
return true;
}
goldenNugget();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3f61000cf542c50ff09
title: 'Завдання 138: Особливі випадки рівнобедрених трикутників'
challengeType: 5
forumTopicId: 301766
dashedName: problem-138-special-isosceles-triangles
---
# --description--
Розглянемо рівнобедрений трикутник з довжиною основи $b = 16$ та катетами $L = 17$.
<img class="img-responsive center-block" alt="рівнобедрений трикутник з ребрами: L — два ребра з однаковою довжиною та основою трикутника — b; а висота трикутника — h від основи трикутника до кута між ребрами L" src="https://cdn.freecodecamp.org/curriculum/project-euler/special-isosceles-triangles.png" style="background-color: white; padding: 10px;" />
За теоремою Піфагора, бачимо, що висота трикутника, $h = \sqrt{{17}^2 - 8^2} = 15$, що на один менше довжини основи.
З $b = 272$ та $L = 305$ отримаємо $h = 273$, що на одиницю більше, ніж довжина основи, і це другий найменший рівнобедрений трикутник із властивістю $h = b ± 1$.
Знайдіть $\суму{L}$ для дванадцяти найменших рівнобедрених трикутників, для яких $h = b ± 1$ та $b$, $L$ — цілі натуральні числа.
# --hints--
`isoscelesTriangles()` повинен повернути число `1118049290473932`.
```js
assert.strictEqual(isoscelesTriangles(), 1118049290473932);
```
# --seed--
## --seed-contents--
```js
function isoscelesTriangles() {
return true;
}
isoscelesTriangles();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3f71000cf542c50ff0a
title: 'Завдання 139: Мозаїка Піфагора'
challengeType: 5
forumTopicId: 301767
dashedName: problem-139-pythagorean-tiles
---
# --description--
Нехай числами (a, b, c) представлені три сторони прямокутного трикутника з цілими сторонами. Можливо об'єднати чотири такі трикутники, щоб отримати квадрат з довжиною сторони c.
Наприклад, трикутники (3, 4, 5) можна об'єднати, утворивши квадрат зі стороною 5 і прорізом розмірами 1 на 1 в його середині, тоді бачимо, що квадрат зі стороною 5 можна покрити двадцятьма п'ятьма квадратними плитками зі сторонами 1 на 1.
<img class="img-responsive center-block" alt="два 5 x 5 квадратів: один складається з чотирьох 3x4x5 трикутників розташованих так, що посередині утворюється проріз 1x1; другий — з двадцяти п'яти квадратів 1x1" src="https://cdn.freecodecamp.org/curriculum/project-euler/pythagorean-tiles.png" style="background-color: white; padding: 10px;" />
У той же час, якщо використати трикутники (5, 12, 13), розміри прорізу становитимуть 7 на 7. Квадрат зі сторонами 13 на 13 не можливо заповнити квадратами зі сторонами 7 на 7.
Для скількох Піфагорових трикутників можливо таке покриття квадратної плиткою, якщо відомо, що периметр прямокутного трикутника менше ста мільйонів?
# --hints--
`pythagoreanTiles()` повинен повертати число `10057761`.
```js
assert.strictEqual(pythagoreanTiles(), 10057761);
```
# --seed--
## --seed-contents--
```js
function pythagoreanTiles() {
return true;
}
pythagoreanTiles();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,111 @@
---
id: 5900f37a1000cf542c50fe8d
title: 'Завдання 14: Найдовша послідовність Коллатца'
challengeType: 5
forumTopicId: 301768
dashedName: problem-14-longest-collatz-sequence
---
# --description--
Наступна ітераційна послідовність визначена для набору додатних цілих чисел:
<div style='padding-left: 4em;'><var>n</var><var>n</var>/2 (<var>n</var> є парним)</div>
<div style='padding-left: 4em;'><var>n</var> → 3<var>n</var> + 1 (<var>n</var> є непарним)</div>
Використовуючи правило вище та починаючи з 13, ми згенеруємо наступну послідовність:
<div style='text-align: center;'>13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1</div>
Можна побачити, що ця послідовність (починається з 13 та закінчується 1) містить 10 членів. Хоча це ще не доведено (проблема Коллатца), вважається, що кожне початкове число також закінчиться 1-ею.
Яке початкове число, під заданим лімітом - `limit`, створює найдовшу послідовність?
**Примітка:** Як тільки послідовність запуститься, значення можуть досягати більше `limit`.
# --hints--
`longestCollatzSequence(14)` має повернути число.
```js
assert(typeof longestCollatzSequence(14) === 'number');
```
`longestCollatzSequence(14)` має повернути 9.
```js
assert.strictEqual(longestCollatzSequence(14), 9);
```
`longestCollatzSequence(5847)` має повернути 3711.
```js
assert.strictEqual(longestCollatzSequence(5847), 3711);
```
`longestCollatzSequence(46500)` має повернути 35655.
```js
assert.strictEqual(longestCollatzSequence(46500), 35655);
```
`longestCollatzSequence(54512)` має повернути 52527.
```js
assert.strictEqual(longestCollatzSequence(54512), 52527);
```
`longestCollatzSequence(100000)` має повернути 77031.
```js
assert.strictEqual(longestCollatzSequence(100000), 77031);
```
`longestCollatzSequence(1000000)` має повернути 837799.
```js
assert.strictEqual(longestCollatzSequence(1000000), 837799);
```
# --seed--
## --seed-contents--
```js
function longestCollatzSequence(limit) {
return true;
}
longestCollatzSequence(14);
```
# --solutions--
```js
function longestCollatzSequence(limit) {
let longest = 1;
let maxLength = 1;
for (let i = Math.floor(limit / 2); i < limit; i++) {
let len = colLen(i);
if (len > maxLength) {
longest = i;
maxLength = len;
}
}
return longest;
}
const knownSequence = { '1': 1 };
function colLen(n) {
if (knownSequence[n]) {
return knownSequence[n];
} else {
const len = n % 2 === 0 ? colLen(n / 2) + 1 : colLen((3 * n + 1) / 2) + 2;
knownSequence[n] = len;
return len;
}
}
```

View File

@ -0,0 +1,52 @@
---
id: 5900f3fa1000cf542c50ff0c
title: 'Завдання 140: Модифіковані золоті самородки Фібоначчі'
challengeType: 5
forumTopicId: 301769
dashedName: problem-140-modified-fibonacci-golden-nuggets
---
# --description--
Розглянемо нескінченний многочленний ряд $A_G(x) = xG_1 + x^2G_2 + x^3G_3 + \ cdots$, де $G_k$ - це $k$-й член рекурентного співвідношення другого порядку $G_k = G_ {k 1} + G_ {k 2}, G_1 = 1 $ і $G_2 = 4$; тобто $1, 4, 5, 9, 14, 23, \ldots$.
Для цієї задачі ми розглянемо значення $x$, для яких $A_G(x)$ є натуральним цілим числом.
Відповідні значення $x$ для перших п’яти натуральних чисел наведені нижче.
| $x$ | $A_G(x)$ |
| ----------------------------- | -------- |
| $\frac{\sqrt{5} 1}{4}$ | $1$ |
| $\frac{2}{5}$ | $2$ |
| $\frac{\sqrt{22} 2}{6}$ | $3$ |
| $\frac{\sqrt{137} 5}{14}$ | $4$ |
| $\frac{1}{2}$ | $5$ |
Ми будемо називати $A_G(x)$ золотим самородком при умові що $x$ - раціональне, оскільки вони стають все рідшими; наприклад, 20-й золотий самородок - 211345365. Знайдіть суму перших тридцяти золотих самородків.
# --hints--
`modifiedGoldenNuggets()` має повернути `5673835352990`
```js
assert.strictEqual(modifiedGoldenNuggets(), 5673835352990);
```
# --seed--
## --seed-contents--
```js
function modifiedGoldenNuggets() {
return true;
}
modifiedGoldenNuggets();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3f91000cf542c50ff0b
title: 'Завдання 141: Дослідження прогресивних чисел, n, які також є квадратами'
challengeType: 5
forumTopicId: 301770
dashedName: problem-141-investigating-progressive-numbers-n-which-are-also-square
---
# --description--
Додатнє ціле число, $n$, ділимо на дільник $d$ і отримуємо частку $q$ та остачу $r$ відповідно. До того ж, $d$, $q$, і $r$ - це послідовні додатні цілі значення в геометричній послідовності, та не обов'язково в такому порядку.
Наприклад, 58, поділене на 6, має частку 9 і остачу 4. Також можна побачити, що 4, 6, 9 є послідовними значеннями в геометричній послідовності (спільне співвідношення $\frac{3}{2}$).
Ми називатимемо такі числа, $n$, прогресивними.
Деякі прогресивні числа такі, як 9 та 10404 = ${102}^2$, також є повними квадратами. Сума прогресивних повних квадратів нижче ста тисяч дорівнює 124657.
Знайдіть суму прогресивних повних квадратів менших за один трильйон (${10}^{12}$).
# --hints--
`progressivePerfectSquares()` має повернути`878454337159`.
```js
assert.strictEqual(progressivePerfectSquares(), 878454337159);
```
# --seed--
## --seed-contents--
```js
function progressivePerfectSquares() {
return true;
}
progressivePerfectSquares();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,38 @@
---
id: 5900f3fa1000cf542c50ff0d
title: 'Завдання 142: Набір ідеального квадрата'
challengeType: 5
forumTopicId: 301771
dashedName: problem-142-perfect-square-collection
---
# --description--
Знайдіть найменше число $x + y + z$ із такими цілими числами $x > y > z > 0$, щоб всі $x + y$, $x y$, $x + z$, $x z$, $y + z$, $y z$ були ідеальними квадратами.
# --hints--
Функція `perfectSquareCollection()` повинна повертатися як `1006193`.
```js
assert.strictEqual(perfectSquareCollection(), 1006193);
```
# --seed--
## --seed-contents--
```js
function perfectSquareCollection() {
return true;
}
perfectSquareCollection();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f3fc1000cf542c50ff0e
title: 'Завдання 143: Дослідження точок Торрічеллі'
challengeType: 5
forumTopicId: 301772
dashedName: problem-143-investigating-the-torricelli-point-of-a-triangle
---
# --description--
Нехай ABC буде трикутником з внутрішніми кутами меншими, ніж 120 градусів. Нехай Х буде будь-якою точкою всередині трикутника, а $XA = p$, $XC = q$, і $XB = r$.
Ферма запропонував Торрічеллі знайти таке розміщення Х, щоб p + q + r зводилось до мінімуму.
Торрічеллі зміг довести, що якщо рівносторонні трикутники AOB, BNC та AMC будуються з кожної сторони трикутника ABC, то описані навколо AOB, BNC та AMC кола будуть перетинатися в одній точці T, всередині трикутника. Крім того, він довів, що точка Т, названа Торрічеллі / Ферма, мінімізує $p + q + r$. Також можна помітити, що при мінімізації суми, $AN = BM = CO = p + q + r $ і AN, BM і CO також перетинаються в точці T.
<img class="img-responsive center-block" alt="рівносторонні трикутники AOB, BNC та AMC будуються з кожної сторони трикутника ABC; з описаними навколо AOB, BNC та AMC колами, які будуть перетинатися в одній точці T, всередині трикутника" src="https://cdn.freecodecamp.org/curriculum/project-euler/investigating-the-torricelli-point-of-a-triangle.png" style="background-color: white; padding: 10px;" />
Якщо сума зведена до мінімуму і a, b, c, p, q та r - всі натуральні числа, ми будемо називати трикутник ABC трикутником Торрічеллі. Наприклад, $a = 399$, $b = 455$, $c = 511$ - приклад трикутника Торрічеллі з $p + q + r = 784$. Знайдіть суму всіх різних значень $p + q + r + r ≤ 120000$ для трикутників Торрічеллі.
# --hints--
`sumTorricelliTriangles()` має повернути`30758397`.
```js
assert.strictEqual(sumTorricelliTriangles(), 30758397);
```
# --seed--
## --seed-contents--
```js
function sumTorricelliTriangles() {
return true;
}
sumTorricelliTriangles();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,61 @@
---
id: 5900f3fc1000cf542c50ff0f
title: 'Завдання 144: Дослідження множинних відображень лазерного променя'
challengeType: 5
forumTopicId: 301773
dashedName: problem-144-investigating-multiple-reflections-of-a-laser-beam
---
# --description--
У лазерній фізиці "біла клітина" - це дзеркальна система, яка діє як лінія затримки для лазерного променя. Промінь проникає у клітину, відскакує від дзеркал, і, зрештою, повертається назад.
Конкретна біла клітина, яку ми розглянемо, - це еліпс із рівнянням $ 4 {x}^2 + y^2 = 100 $
Ділянка, що відповідає $ 0.01 ≤ x ≤ +0.01 $ у верхній частині, відсутня, що дозволяє світлу входити і виходити через отвір.
<div style="text-align: center">
<img class="img-responsive center-block" alt="світловий промінь починається в точці (0,0, 10,1) і стрикається з дзеркалом в точці (1,4, -9,6)" src="https://cdn.freecodecamp.org/curriculum/project-euler/investigating-multiple-reflections-of-a-laser-beam-1.png" style="display: inline-block; background-color: white; padding: 10px;">
<img class="img-responsive center-block" alt="анімація з першими 10 віддзеркаленнями променя" src="https://cdn.freecodecamp.org/curriculum/project-euler/investigating-multiple-reflections-of-a-laser-beam-2.gif" style="display: inline-block; background-color: white; padding: 10px;">
</div><br>
Світловий промінь у цій задачі починається в точці (0,0, 10,1) безпосередньо біля білої клітини, і промінь спочатку стикається з дзеркалом в точці (1,4, -9,6).
Кожного разу, коли лазерний промінь потрапляє на поверхню еліпса, він дотримується звичного закону відбиття «кут падіння дорівнює куту відбиття» Тобто і промінь, що падає, і відбитий промінь, утворюють однаковий кут із нормаллю у точці падіння.
На малюнку зліва червона лінія показує перші дві точки дотику між лазерним променем та стінкою білої клітини; синя лінія показує лінію, дотичну до еліпса в точці падіння першого відскоку.
Кут нахилу m дотичної лінії в будь-якій точці (x, y) заданого еліпса: $m = ℉4 × \frac{x}{y}$
Нормаль — перпендикуляр до дотичної, що проходить через точку дотику.
Анімація праворуч показує перші 10 віддзеркалень променя.
Скільки разів промінь потрапляє на внутрішню поверхню білої клітини перед виходом?
# --hints--
`laserBeamReflections()` має повертати до`354`.
```js
assert.strictEqual(laserBeamReflections(), 354);
```
# --seed--
## --seed-contents--
```js
function laserBeamReflections() {
return true;
}
laserBeamReflections();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,42 @@
---
id: 5900f3fd1000cf542c50ff10
title: 'Завдання 145: скільки існує оборотних чисел, які менші за один мільярд?'
challengeType: 5
forumTopicId: 301774
dashedName: problem-145-how-many-reversible-numbers-are-there-below-one-billion
---
# --description--
Деякі додатні цілі числа $n$ мають властивість, що сума [ $n + reverse(n)$ ] складається з зовсім непарних (десяткових) цифр. Наприклад, $36 + 63 = 99$ та$409 + 904 = 1313$. Називатимемо такі числа оборотними; таким чином 36, 63, 409 і 904 є оборотними. Провідні нулі не можна використовувати в $n$ або $reverse(n)$.
Існують 120 оборотних чисел менших за тисячу.
Скільки існує оборотних чисел, що менші за один мільярд (${10}^9$)?
# --hints--
Функція `reversibleNumbers()` повинна повернути `608720`.
```js
assert.strictEqual(reversibleNumbers(), 608720);
```
# --seed--
## --seed-contents--
```js
function reversibleNumbers() {
return true;
}
reversibleNumbers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,40 @@
---
id: 5900f3fe1000cf542c50ff11
title: 'Завдання 146: дослідження моделі простих чисел'
challengeType: 5
forumTopicId: 301775
dashedName: problem-146-investigating-a-prime-pattern
---
# --description--
Найменше натуральне число $n$ для якого числа $n^2 + 1$, $n^2 + 3$, $n^2 + 7$, $n^2 + 9$, $n^2 + 13$ і $n^2 + 27$ є послідовними простими числами - 10. Сума усіх таких цілих чисел $n$ менших за один мільйон становить 1242490.
Яка сума усіх таких цілих чисел $n$ менших за 150 мільйонів?
# --hints--
`primePattern()` має повернути `676333270`.
```js
assert.strictEqual(primePattern(), 676333270);
```
# --seed--
## --seed-contents--
```js
function primePattern() {
return true;
}
primePattern();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,48 @@
---
id: 5900f3ff1000cf542c50ff12
title: 'Завдання 147: Прямокутники у перехресних сітках'
challengeType: 5
forumTopicId: 301776
dashedName: problem-147-rectangles-in-cross-hatched-grids
---
# --description--
У сітці 3х2 всього може бути розташовано 37 різних прямокутників, як зазначено на ескізі.
<img class="img-responsive center-block" alt="способи розміщення різних прямокутників в сітці з перехресним штрихуванням розміром 3x2" src="https://cdn.freecodecamp.org/curriculum/project-euler/rectangles-in-cross-hatched-grids.png" style="background-color: white; padding: 10px;" />
Є 5 сіток, менших, ніж 3х2, розміри яких (горизонтальні та вертикальні) є важливими: 1x1, 2x1, 3x1, 1x2 and 2x2. Якщо кожна з них перехресно заштрихована, то в менших сітках можна буде розмістити наступне число прямокутників:
$$\початок{array}{|c|c|} \hline 1 \times 1 & 1 \\\\ \hline 2 \times 1 & 4 \\\\ \hline 3 \times 1 & 8 \\\\ \hline 1 \times 2 & 4 \\\\ \hline 2 \times 2 & 18 \\\\ \hline \кінець{array}$$
Додаючи їх до 37 прямокутників з сітки розміром 3x2, загалом можна розмістити 72 різних прямокутники у сітках розміром 3x2 і менших.
Скільки різних прямокутників можна розмістити в межах сіток розміром 47x43 і менших?
# --hints--
`crossHatchedRectangles()` має повернути `846910284`.
```js
assert.strictEqual(crossHatchedRectangles(), 846910284);
```
# --seed--
## --seed-contents--
```js
function crossHatchedRectangles() {
return true;
}
crossHatchedRectangles();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,54 @@
---
id: 5900f4021000cf542c50ff14
title: 'Завдання 148: Дослідження трикутника Паскаля'
challengeType: 5
forumTopicId: 301777
dashedName: problem-148-exploring-pascals-triangle
---
# --description--
Ми можемо легко перевірити, що жоден елемент у перших семи рядах трикутника Паскаля не ділиться на 7:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
```
Однак, якщо ми перевіряємо перші сто рядів, то виявимо, що лише 2361 з 5050 елементів не діляться на 7.
# --instructions--
Знайдіть кількість елементів, які не діляться на 7 у першому мільярді (${10}^9$) рядків трикутника Паскаля.
# --hints--
`entriesOfPascalsTriangle()` має повернути `2129970655314432`.
```js
assert.strictEqual(entriesOfPascalsTriangle(), 2129970655314432);
```
# --seed--
## --seed-contents--
```js
function entriesOfPascalsTriangle() {
return true;
}
entriesOfPascalsTriangle();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,54 @@
---
id: 5900f4021000cf542c50ff13
title: 'Завдання 149. Пошук підпослідовності з максимальною сумою'
challengeType: 5
forumTopicId: 301778
dashedName: problem-149-searching-for-a-maximum-sum-subsequence
---
# --description--
Дивлячись на таблицю нижче, легко переконатися, що максимально можлива сума суміжних чисел у будь-якому напрямку (горизонтальному, вертикальному, діагональному чи антидіагональному) становить $16 (= 8 + 7 + 1)$.
$$\begin{array}{|r|r|r|r|} \hline 2 & 5 & 3 & 2 \\\\ \hline 9 & 6 & 5 & 1 \\\\ \hline 3 & 2 & 7 & 3 \\\\ \hline 1 & 8 & 4 & 8 \\\\ \hline \end{array}$$
Тепер повторимо пошук, але тільки в набагато більшому масштабі:
Спочатку, згенеруйте чотири мільйони псевдовипадкових чисел, використовуючи конкретну форму того, що відомо як "генератор Фібоначчі з запізненням":
Для $1 ≤ k ≤ 55$, $s_k = (100003 200003k + 300007{k}^3) \\ (modulo\\ 1000000) 500000$.
Для $56 ≤ k ≤ 4000000$, $s_k = (s_{k 24} + s_{k 55} + 1000000) \\ (modulo\\ 1000000) 500000$.
Таким чином, $s_{10} = 393027$ та $s_{100} = 86613$.
Потім члени $s$ розташовуються в таблиці 2000 × 2000, використовуючи перші 2000 чисел для заповнення першого рядка (послідовно), наступні 2000 чисел - для заповнення другого рядка і так далі.
В результаті знайдіть найбільшу суму (будь-якої кількості) суміжних записів в будь-якому напрямку (горизонтальному, вертикальному, діагональному або антидіагональному).
# --hints--
`maximumSubSequence()` має повернути `52852124`.
```js
assert.strictEqual(maximumSubSequence(), 52852124);
```
# --seed--
## --seed-contents--
```js
function maximumSubSequence() {
return true;
}
maximumSubSequence();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,68 @@
---
id: 5900f37b1000cf542c50fe8e
title: 'Завдання 15: Доріжки на сітці'
challengeType: 5
forumTopicId: 301780
dashedName: problem-15-lattice-paths
---
# --description--
Починаючи з верхнього лівого кутка сітки 2×2, та маючи право рухатися вправо та вниз, є рівно 6 шляхів до нижнього правого кутка.
<img class="img-responsive center-block" alt="6 зображень з сітками 2 на 2 показують усі шляхи до нижнього правого кутка" src="https://cdn-media-1.freecodecamp.org/project-euler/1Atixoj.gif" style="background-color: white; padding: 10px;" />
Скільки таких шляхів є через задану сітку - `gridSize`?
# --hints--
`latticePaths(4)` має повернути число.
```js
assert(typeof latticePaths(4) === 'number');
```
`latticePaths(4)` має повернути 70.
```js
assert.strictEqual(latticePaths(4), 70);
```
`latticePaths(9)` має повернути 48620.
```js
assert.strictEqual(latticePaths(9), 48620);
```
`latticePaths(20)` має повернути 137846528820.
```js
assert.strictEqual(latticePaths(20), 137846528820);
```
# --seed--
## --seed-contents--
```js
function latticePaths(gridSize) {
return true;
}
latticePaths(4);
```
# --solutions--
```js
function latticePaths(gridSize) {
let paths = 1;
for (let i = 0; i < gridSize; i++) {
paths *= (2 * gridSize) - i;
paths /= i + 1;
}
return paths;
}
```

View File

@ -0,0 +1,59 @@
---
id: 5900f4031000cf542c50ff15
title: >-
Завдання 150. Пошук трикутного масиву для меншого трикутника з мінімальною сумою
challengeType: 5
forumTopicId: 301781
dashedName: problem-150-searching-a-triangular-array-for-a-sub-triangle-having-minimum-sum
---
# --description--
У трикутному масиві цілих додатних і від'ємних чисел ми хочемо знайти такий менший трикутник, сума чисел у якому була б найменшою.
У наведеному нижче прикладі можна легко перевірити, чи задовільняє виділений трикутник цій умові, маючи суму 42.
<img class="img-responsive center-block" alt="трикутний масив з позначеним трикутником із сумою -42" src="https://cdn.freecodecamp.org/curriculum/project-euler/searching-a-triangular-array-for-a-sub-triangle-having-minimum-sum.gif" style="background-color: white; padding: 10px;" />
Ми хочемо створити такий трикутний масив з тисячею рядків, тому ми генеруємо 500500 псевдовипадкових чисел $s_k$ у діапазоні $±2^{19}$, використовуючи тип генератора випадкових чисел (відомий як лінійний конгруентний метод) наступним чином:
$$\begin{align} t := & \\ 0\\\\ \text{for}\\ & k = 1\\ \text{up to}\\ k = 500500:\\\\ & t := (615949 × t + 797807)\\ \text{modulo}\\ 2^{20}\\\\ & s_k := t 219\\\\ \end{align}$$
Таким чином: $s_1 = 273519$, $s_2 = 153582$, $s_3 = 450905$ і т. д.
Трикутний масив утворений з використанням псевдовипадкових чисел:
$$ s_1 \\\\ s_2\\;s_3 \\\\ s_4\\; s_5\\; s_6 \\\\ s_7\\; s_8\\; s_9\\; s_{10} \\\\ \ldots $$
Менші трикутники можуть починатися з будь-якого елемента масиву і сягати вниз як завгодно далеко (захоплюючи два елементи безпосередньо під ним з наступного ряду, три елементи безпосередньо під ним з наступного ряду і так далі).
"Сума меншого трикутника" визначається як сума всіх чисел, які він містить.
Знайдіть найменшу можливу суму меншого трикутника.
# --hints--
`smallestSubTriangleSum()` має повернути `-271248680`.
```js
assert.strictEqual(smallestSubTriangleSum(), -271248680);
```
# --seed--
## --seed-contents--
```js
function smallestSubTriangleSum() {
return true;
}
smallestSubTriangleSum();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,52 @@
---
id: 5900f4031000cf542c50ff16
title: 'Завдання 151. Аркуші стандартних розмірів: середня очікувана кількість'
challengeType: 5
forumTopicId: 301782
dashedName: problem-151-paper-sheets-of-standard-sizes-an-expected-value-problem
---
# --description--
Щотижня друкарня друкує 16 партій (завдань), і для кожної партії потрібен аркуш спеціального кольоропробного паперу формату A5.
Щоранку в понеділок бригадир відкриває новий конверт, який містить великий аркуш спеціального паперу розміром A1.
Він ділить його навпіл, таким чином отримуючи два аркуші розміром А2. Потім він розрізає один з них навпіл, щоб отримати два аркуші формату А3 і так далі, поки не отримає аркуш розміром А5, необхідний для першої партії тижня.
Усі невикористані аркуші кладуть назад у конверт.
<img class="img-responsive center-block" alt="Аркуш розміром A1 може бути поділений на аркуші форматом: A2, A3, A4 та два аркуші форматом A5" src="https://cdn.freecodecamp.org/curriculum/project-euler/paper-sheets-of-standard-sizes-an-expected-value-problem.png" style="background-color: white; padding: 10px;" />
На початку кожної наступної партії він навмання бере один аркуш паперу з конверта. Якщо він виявляється розміром А5, то використовує його. Якщо ж більший, то він повторює процедуру «розрізання навпіл», поки не отримає те, що йому потрібно, а решту аркушів повертає назад до конверта.
За виключенням першої та останньої партії, знайдіть очікувану кількість разів (протягом кожного тижня), коли бригадир знайде в конверті один аркуш.
Дайте відповідь, заокруглену до шести знаків після коми, використовуючи формат `x.xxxxxx`.
# --hints--
`expectedValueProblem()` має повернути `0.464399`.
```js
assert.strictEqual(expectedValueProblem(), 0.464399);
```
# --seed--
## --seed-contents--
```js
function expectedValueProblem() {
return true;
}
expectedValueProblem();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f4041000cf542c50ff17
title: 'Завдання 152. Написання половини як суми обернених квадратів'
challengeType: 5
forumTopicId: 301783
dashedName: problem-152-writing-one-half-as-a-sum-of-inverse-squares
---
# --description--
Існує два способи, щоб записати число $\frac{1}{2}$ як суму обернених квадратів, використовуючи різні цілі числа.
Наприклад, числа {2,3,4,5,7,12,15,20,28,35} можуть бути використані:
$$\frac{1}{2} = \frac{1}{2^2} + \frac{1}{3^2} + \frac{1}{4^2} + \frac{1}{5^2} + \frac{1}{7^2} + \frac{1}{{12}^2} + \frac{1}{{15}^2} + \frac{1}{{20}^2} + \frac{1}{{28}^2} + \frac{1}{{35}^2}$$
Насправді, використовуючи лише цілі числа від 2 до 45 включно, є три способи зробити це, інші два: {2,3,4,6,7,9,10,20,28,35,36,45} та {2,3,4,6,7,9,12,15,28,30,35,36,45}.
Скільки існує способів записати число $\frac{1}{2}$ у вигляді суми зворотних квадратів, використовуючи різні цілі числа від 2 до 80 включно?
# --hints--
`sumInverseSquares()` має повернути `301`.
```js
assert.strictEqual(sumInverseSquares(), 301);
```
# --seed--
## --seed-contents--
```js
function sumInverseSquares() {
return true;
}
sumInverseSquares();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,84 @@
---
id: 5900f4051000cf542c50ff18
title: 'Завдання 153. Дослідження Гауссових цілих чисел'
challengeType: 5
forumTopicId: 301784
dashedName: problem-153-investigating-gaussian-integers
---
# --description--
Як ми всі знаємо рівняння $x^2 = -1$ не має реальних розв'язків $x$.
Якщо підставити уявне число $i$, то це рівняння має два рішення: $x = i$ та $x = -i$.
У наступному випадку, рівняння {(x - 3)}^2 = -4$ має два складні рішення: $x = 3 + 2i$ і $x = 3 - 2i$, які називаються складним спряженими числами.
Числа $a + bi$ називаються комплексними числами.
Загалом $a + bi$ та $a - bi$ — спряжені числа. Гауссове ціле число є комплексним числом $a + bi$ таким чином, що і $a$, і $b$ є цілими числами.
Звичайні цілі числа також є простими Гауссовими цілими числами (з $b = 0$).
Щоб відрізняти їх від простих Гауссових чисел з $b ≠ 0$ ми називаємо такі цілі числа "раціональними цілими числами"
Просте Гауссове число називається дільником раціонального цілого числа $n$, якщо результат також є простим Гауссовим числом.
Наприклад, якщо поділити 5 на $1 + 2i$, можемо спростити наступним чином:
Помножте чисельник та знаменник на комплексне спряжене число $1 + 2i$: $1 - 2i$.
Отримаємо:
$$\frac{5}{1 + 2i} = \frac{5}{1 + 2i} \frac{1 - 2i}{1 - 2i} = \frac{5(1 - 2i)}{1 - {(2i)}^2} = \frac{5(1 - 2i)}{1 - (-4)} = \frac{5(1 - 2i)}{5} = 1 - 2i$$
Отже, $1 + 2i$ є дільником 5.
Зверніть увагу, що $1 + i$ не є дільником 5, оскільки:
$$\frac{5}{1 + i} = \frac{5}{2} - \frac{5}{2}i$$
Зверніть увагу, що якщо просте Гауссове ціле число ($a + bi$) є дільником раціонального цілого числа $n$, тоді його спряжене число ($a - bi$) також є дільником $n$. Фактично у числа 5 є шість дільників, такі, що їх формульна сума: {1, 1 + 2i, 1 - 2i, 2 + i, 2 - i, 5}.
Нижче наведена таблиця всіх дільників для перших п'яти додатних раціональних цілих чисел:
| n | Просте Гауссове ціле число з формульною сумою | Сума s(n) цих дільників |
| - | --------------------------------------------- | ----------------------- |
| 1 | 1 | 1 |
| 2 | 1, 1 + i, 1 - i, 2 | 5 |
| 3 | 1, 3 | 4 |
| 4 | 1, 1 + i, 1 - i, 2, 2 + 2i, 2 - 2i, 4 | 13 |
| 5 | 1, 1 + 2i, 1 - 2i, 2 + i, 2 - i, 5 | 12 |
Для дільників з додатною формульною сумою маємо: $\displaystyle\sum_{n=1}^5 s(n) = 35$.
Для $1 ≤ n ≤ {10}^5$, $\displaystyle\sum_{n = 1}^{10}^5} s(n) = 17924657155$.
Що таке $\displaystyle\sum_{n=1}^{{10}^8} s(n)$?
# --hints--
`sumGaussianIntegers()` має повернути `17971254122360636`.
```js
assert.strictEqual(sumGaussianIntegers(), 17971254122360636);
```
# --seed--
## --seed-contents--
```js
function sumGaussianIntegers() {
return true;
}
sumGaussianIntegers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f4071000cf542c50ff19
title: 'Завдання 154. Знайомство з пірамідою Паскаля'
challengeType: 5
forumTopicId: 301785
dashedName: problem-154-exploring-pascals-pyramid
---
# --description--
Трикутна піраміда побудована з використанням сферичних куль таким чином, що кожна кулька спирається рівно на три кульки наступного нижнього рівня.
<img class="img-responsive center-block" alt="трикутна піраміда складається з сферичних куль і налічує чотири рівні" src="https://cdn.freecodecamp.org/curriculum/project-euler/exploring-pascals-pyramid.png" style="background-color: white; padding: 10px;" />
Потім ми обчислюємо кількість шляхів, що ведуть від вершини до кожної позиції: шлях починається з вершини і проходить вниз до кожної з трьох сфер безпосередньо під поточним розташуванням. Відповідно, кількість шляхів для досягнення певної позиції — це сума чисел безпосередньо над нею (залежно від положення, над нею може бути до трьох чисел).
У результаті чого ми отримуємо трикутник Паскаля, у якому цифри у кожному ряді n є біномінальними коефіцієнтами ${(x + y + z)}^n$.
Скільки коефіцієнтів у ряді ${(x + y + z)}^{200000} $ кратні ${10}^{12}$?
# --hints--
`pascalsPyramid()` має повертати `479742450`.
```js
assert.strictEqual(pascalsPyramid(), 479742450);
```
# --seed--
## --seed-contents--
```js
function pascalsPyramid() {
return true;
}
pascalsPyramid();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,50 @@
---
id: 5900f4081000cf542c50ff1a
title: 'Завдання 155: підрахунок кількості конденсаторів в електричних схемах'
challengeType: 5
forumTopicId: 301786
dashedName: problem-155-counting-capacitor-circuits
---
# --description--
В електричних схемах використовують конденсатори однакового значення — С.
Конденсатори можна з'єднати послідовно або паралельно, щоб утворити додаткові блоки, які потім можна з'єднати послідовно або паралельно з іншими конденсаторами або іншими додатковими блоками для утворення більших субблоків і так далі до кінцевої схеми.
Завдяки цій простій процедурі та кількості n однакових конденсаторів, ми можемо створити схеми з діапазоном різних загальних ємностей. Наприклад, використовуючи приблизно $n = 3$ конденсаторів, кожен з яких $60 μF$, ми можемо отримати наступні 7 різних загальних значень ємності:
<img class="img-responsive center-block" alt="приклади схем, які мають до трьох конденсаторів, кожен 60 мкФ" src="https://cdn.freecodecamp.org/curriculum/project-euler/counting-capacitor-circuits.gif" style="background-color: white; padding: 10px;" />
Якщо ми позначимо кількість різних значень загальної ємності як $D(n)$, які можна отримати при використанні близько $n$ однакових конденсаторів, діючи за простою процедурою, описаною вище, отримаємо: $D(1) = 1, D(2) = 3, D(3)=7, \ldots$
Знайдіть $D(18)$.
Нагадування: При паралельному з'єднанні конденсаторів $C_1$, $C_2$ загальна ємність становить $C_T = C_1 + C_2 + \cdots$, тоді як при послідовному з'єднанні загальна ємність визначається як $\frac{1}{C_T} = \frac{1}{C_1} + \frac{1}{C_2} + \cdots$.
# --hints--
`capacitanceValues()` має повернути `3857447`.
```js
assert.strictEqual(capacitanceValues(), 3857447);
```
# --seed--
## --seed-contents--
```js
function capacitanceValues() {
return true;
}
capacitanceValues();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,68 @@
---
id: 5900f4091000cf542c50ff1b
title: 'Завдання 156: підрахунок цифр'
challengeType: 5
forumTopicId: 301787
dashedName: problem-156-counting-digits
---
# --description--
Починаючи з нуля, натуральні числа із основою 10 записуються так:
0 1 2 3 4 5 6 7 8 9 10 11 12....
Нехай цифра $d = 1$. Після запису кожного числа n, кількість отриманих чисел оновлюється й отримане число буде $f(n, 1)$. Перші значення lkz $f(n, 1)$ будіть такі:
| $n$ | $f(n, 1)$ |
| --- | --------- |
| 0 | 0 |
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 1 |
| 7 | 1 |
| 8 | 1 |
| 9 | 1 |
| 10 | 2 |
| 11 | 4 |
| 12 | 5 |
Зверніть увагу, що $f(n, 1)$ ніколи не дорівнює 3.
Отже, два перші розв'язки рівняння $f(n, 1) = n$ будуть $n = 0$ і $n = 1$. Наступне рішення буде $n = 199981$. Таким же чином функція $f(n, d)$ показує загальну кількість цифр d, що була записана після того, як число $n$ було написано.
Фактично, для кожної цифри $d ≠ 0$, 0 — це перше рішення для рівняння $f(n, d) = n$. Нехай $s(d)$ — сума усіх рішень, для яких $f(n, d) = n$.
Дано $s(1) = 22786974071$. Знайдіть $\sum{s(d)}$, якщо $1 ≤ d ≤ 9$.
Примітка: якщо для деяких $n$, $f(n, d) = n$ на більш ніж значення $d$, це значення $n$ знову враховується для кожного значення $d$, для яких $f(n, d) = n$.
# --hints--
`countingDigits()` має повернути `21295121502550`.
```js
assert.strictEqual(countingDigits(), 21295121502550);
```
# --seed--
## --seed-contents--
```js
function countingDigits() {
return true;
}
countingDigits();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f4091000cf542c50ff1c
title: 'Завдання 157: Розв''язування діофантових рівнянь'
challengeType: 5
forumTopicId: 301788
dashedName: problem-157-solving-the-diophantine-equation
---
# --description--
Розглянемо діофантові рівняння $\frac{1}{a} + \frac{1}{b} = \frac{p}{{10}^n}$ де $a$, $b$, $p$, $n$ — додатні цілі числа, а $a ≤ b$.
Якщо $n = 1$ дане рівняння має 20 розв'язків, показаних нижче:
$$\begin{array}{lllll} \frac{1}{1} + \frac{1}{1} = \frac{20}{10} & \frac{1}{1} + \frac{1}{2} = \frac{15}{10} & \frac{1}{1} + \frac{1}{5} = \frac{12}{10} & \frac{1}{1} + \frac{1}{10} = \frac{11}{10} & \frac{1}{2} + \frac{1}{2} = \frac{10}{10} \\\\ \frac{1}{2} + \frac{1}{5} = \frac{7}{10} & \frac{1}{2} + \frac{1}{10} = \frac{6}{10} & \frac{1}{3} + \frac{1}{6} = \frac{5}{10} & \frac{1}{3} + \frac{1}{15} = \frac{4}{10} & \frac{1}{4} + \frac{1}{4} = \frac{5}{10} \\\\ \frac{1}{4} + \frac{1}{4} = \frac{5}{10} & \frac{1}{5} + \frac{1}{5} = \frac{4}{10} & \frac{1}{5} + \frac{1}{10} = \frac{3}{10} & \frac{1}{6} + \frac{1}{30} = \frac{2}{10} & \frac{1}{10} + \frac{1}{10} = \frac{2}{10} \\\\ \frac{1}{11} + \frac{1}{110} = \frac{1}{10} & \frac{1}{12} + \frac{1}{60} = \frac{1}{10} & \frac{1}{14} + \frac{1}{35} = \frac{1}{10} & \frac{1}{15} + \frac{1}{30} = \frac{1}{10} & \frac{1}{20} + \frac{1}{20} = \frac{1}{10} \end{array}$$
Скільки розв'язків має це рівняння, якщо $1 ≤ n 9$?
# --hints--
`diophantineEquation()` має повертати `53490`.
```js
assert.strictEqual(diophantineEquation(), 53490);
```
# --seed--
## --seed-contents--
```js
function diophantineEquation() {
return true;
}
diophantineEquation();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,54 @@
---
id: 5900f40a1000cf542c50ff1d
title: >-
Завдання 158: Дослідження рядкових типів, де лише один символ стоїть у лексикографічному порядку зліва від сусіднього символу
challengeType: 5
forumTopicId: 301789
dashedName: >-
problem-158-exploring-strings-for-which-only-one-character-comes-lexicographically-after-its-neighbour-to-the-left
---
# --description--
Якщо взяти три різні літери з 26 літер англійського алфавіту, то можна поділити алфавіт на рядкові типи із трьох символів.
Наприклад, 'abc', 'hat' та 'zyx'.
Якщо подивитись на ці три приклади, то у 'abc' два символи стоять зліва від сусіднього значення у лексикографічному порядку.
У 'hat' лише один символ стоїть зліва від сусіднього символу у лексикографічному порядку. У 'zyx' нуль символів стоять у лексикографічному порядку зліва від сусіда.
Усього є 10400 рядкових типів довжиною в 3 символи, де лише один символ стоїть у лексикографічному порядку відносно сусіднього символу зліва.
Розглянемо рядки $n ≤ 26$ різних символів алфавіту.
Для кожного $n$, $p(n)$ є певна кількість рядкових типів з довжиною $n$, де лише один символ стоїть у лексикографічному порядку відносно сусіда зліва.
Яке найбільше значення $p(n)$?
# --hints--
`lexicographicNeighbours()` має повертати `409511334375`.
```js
assert.strictEqual(lexicographicNeighbours(), 409511334375);
```
# --seed--
## --seed-contents--
```js
function lexicographicNeighbours() {
return true;
}
lexicographicNeighbours();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,60 @@
---
id: 5900f40c1000cf542c50ff1e
title: 'Завдання 159: цифровий корінь сум факторизації'
challengeType: 5
forumTopicId: 301790
dashedName: problem-159-digital-root-sums-of-factorisations
---
# --description--
Складене число можна факторизувати різними способами.
Наприклад, за виключенням множення на один, 24 можна факторизувати 7 різними способами:
$$\begin{align} & 24 = 2 \times 2 \times 2 \times 3\\\\ & 24 = 2 \times 3 \times 4 \\\\ & 24 = 2 \times 2 \times 6 \\\\ & 24 = 4 \times 6 \\\\ & 24 = 3 \times 8 \\\\ & 24 = 2 \times 12 \\\\ & 24 = 24 \end{align}$$
Нагадаємо, що цифровий корінь числа в основі 10 знаходять додаванням цифр цього числа, повторюючи процес, поки число не буде менше ніж 10. Цифровий корінь 467 буде 8.
Digital Root Sum (DRS) — сума цифрових коренів окремих цифр числа. Графік нижче демонструє всі значення DRS для 24.
| Факторизація | Digital Root Sum |
| ------------ | ---------------- |
| 2x2x2x3 | 9 |
| 2x3x4 | 9 |
| 2x2x6 | 10 |
| 4x6 | 10 |
| 3x8 | 11 |
| 2x12 | 5 |
| 24 | 6 |
Найбільший Digital Root Sum для 24 це 11. Функція $mdrs(n)$ дозволяє визначити найбільший Digital Root Sum для $n$. Отже, $mdrs(24) = 11$.
Знайдіть $\sum{mdrs(n)}$ для $1 &lt; n &lt; 1,000,000$.
# --hints--
`euler159()` має повертати `14489159`.
```js
assert.strictEqual(euler159(), 14489159);
```
# --seed--
## --seed-contents--
```js
function euler159() {
return true;
}
euler159();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,85 @@
---
id: 5900f37d1000cf542c50fe8f
title: 'Завдання 16: Сума цифр степеня'
challengeType: 5
forumTopicId: 301791
dashedName: problem-16-power-digit-sum
---
# --description--
2<sup>15</sup> = 32768, а сума цифр цього числа дорівнює 3 + 2 + 7 + 6 + 8 = 26.
Яка сума цифр числа 2<sup><code>exponent</code></sup>?
# --hints--
`powerDigitSum(15)` має повернути число.
```js
assert(typeof powerDigitSum(15) === 'number');
```
`powerDigitSum(15)` має повернути число 26.
```js
assert.strictEqual(powerDigitSum(15), 26);
```
`powerDigitSum(128)` має повернути число 166.
```js
assert.strictEqual(powerDigitSum(128), 166);
```
`powerDigitSum(1000)` має повернути число 1366.
```js
assert.strictEqual(powerDigitSum(1000), 1366);
```
# --seed--
## --seed-contents--
```js
function powerDigitSum(exponent) {
return true;
}
powerDigitSum(15);
```
# --solutions--
```js
function powerDigitSum(exponent) {
const bigNum = [1];
let sum = 0;
for (let i = 1; i <= exponent; i++) {
let count = bigNum.length + 1;
let overflow = 0;
for (let j = 0; j < count; j++) {
let digit = bigNum[j] || 0;
digit = 2 * digit + overflow;
if (digit > 9) {
digit -= 10;
overflow = 1;
} else {
overflow = 0;
}
bigNum[j] = digit;
}
}
bigNum.forEach(function(num) {
return sum += num;
});
return sum;
}
```

View File

@ -0,0 +1,44 @@
---
id: 5900f40d1000cf542c50ff1f
title: 'Задача 160: Факторіальні кінцеві цифри'
challengeType: 5
forumTopicId: 301794
dashedName: problem-160-factorial-trailing-digits
---
# --description--
Для будь-якого $N$ нехай $f(Н)$ буде останніми п'ятьма цифрами перед кінцевими нулями в $N!$.
Наприклад,
$$\begin{align} & 9! = 362880 \\; \text{so} \\; f(9) = 36288 \\\\ & 10! = 3628800 \\; \text{so} \\; f(10) = 36288 \\\\ & 20! = 2432902008176640000 \\; \text{so} \\; f(20) = 17664 \end{align}$$
Знайдіть $f(1,000,000,000,000)$
# --hints--
`factorialTrailingDigits()` має повернути `16576`.
```js
assert.strictEqual(factorialTrailingDigits(), 16576);
```
# --seed--
## --seed-contents--
```js
function factorialTrailingDigits() {
return true;
}
factorialTrailingDigits();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,52 @@
---
id: 5900f40d1000cf542c50ff20
title: 'Проблема 161: Тріоміни'
challengeType: 5
forumTopicId: 301795
dashedName: problem-161-triominoes
---
# --description--
Тріоміно - це форма, що складається з трьох квадратів, з'єднаних за допомогою ребер.
Є дві основні форми:
<img class="img-responsive center-block" alt="дві основні форми тріомінів" src="https://cdn.freecodecamp.org/curriculum/project-euler/triominoes-1.gif" style="background-color: white; padding: 10px;" />
Існує шість можливих варіантів фігур:
<img class="img-responsive center-block" alt="форми тріомінів включно із варіантами" src="https://cdn.freecodecamp.org/curriculum/project-euler/triominoes-2.gif" style="background-color: white; padding: 10px;" />
Будь-яка таблиця з n на m, для якогї nxm ділиться на 3, може бути викладена тріомінами. Якщо ми розглядаємо також і плитки, що можуть бути отримані шляхом відбиття або обертання від іншої плитки, то існує 41 спосіб як таблицю 2 на 9 можна заповнити фігурами тріоміно:
<img class="img-responsive center-block" alt="анімація, що показує 41 спосіб заповнення таблиці 2 на 9 тріомінами" src="https://cdn.freecodecamp.org/curriculum/project-euler/triominoes-3.gif" style="background-color: white; padding: 10px;" />
Скількома способами таблицю 9 на 12 можна заповнити тріомінами таким чином?
# --hints--
`triominoes()` повинен повернутися як `20574308184277972`.
```js
assert.strictEqual(triominoes(), 20574308184277972);
```
# --seed--
## --seed-contents--
```js
function triominoes() {
return true;
}
triominoes();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,58 @@
---
id: 5900f40e1000cf542c50ff21
title: 'Задача 162: Шістнадцяткові числа'
challengeType: 5
forumTopicId: 301796
dashedName: problem-162-hexadecimal-numbers
---
# --description--
У шістнадцятковій системі числення числа представлені шістнадцятьма різними цифрами:
$$0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F$$
Шістнадцяткове число AF при написанні в десятковій системі дорівнює $10 \times 16 + 15 = 175$.
У трицифрових шістнадцяткових числах 10A, 1A0, A10, і A01, цифри: 0,1 та А - присутні у всіх випадках.
Як і числа, записані в десятковій системі, ми пишемо шістнадцяткові числа без початкових нулів.
Скільки шістнадцяткових чисел, що містять не більше шістнадцяти шістнадцяткових цифр, існує з усіма цифрами 0,1 і А, що присутні принаймні один раз?
Дайте відповідь шістнадцятковим числом в одному рядку.
**Примітка:** (А, В, C, D, E і F у верхньому регістрі, без будь-якого ведучого або плаваючого коду, який позначає число як шістнадцяткове та без ведучих нулів, наприклад, 1A3F, а не: 0x1a3f, $1A3F, #1A3F, 0000001A3F)
# --hints--
`hexadecimalNumbers()` має повернути рядок.
```js
assert(typeof hexadecimalNumbers() === 'string');
```
`hexadecimalNumbers()` s має повернути рядок `3D58725572C62302`.
```js
assert.strictEqual(hexadecimalNumbers(), '3D58725572C62302');
```
# --seed--
## --seed-contents--
```js
function hexadecimalNumbers() {
return true;
}
hexadecimalNumbers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,50 @@
---
id: 5900f40f1000cf542c50ff22
title: 'Задача 163: Трикутники з перехресним штрихуванням'
challengeType: 5
forumTopicId: 301797
dashedName: problem-163-cross-hatched-triangles
---
# --description--
Розглянемо рівносторонній трикутник, у якому прямі лінії проведені від кожної вершини до середини протилежної сторони, наприклад, як на трикутнику розміру 1 на рисунку нижче.
<img class="img-responsive center-block" alt="трикутники розміру 1 і розміру 2" src="https://cdn.freecodecamp.org/curriculum/project-euler/cross-hatched-triangles.gif" style="background-color: white; padding: 10px;" />
Тепер у цьому трикутнику можна знайти шістнадцять трикутників різної форми, розміру, напряму чи розташування. Використовуючи трикутники розміру 1 як будівельні блоки, можна сформувати більші трикутники, такі як трикутник розміру 2 на рисунку вище. Тепер у трикутнику розміру 2 можна знайти сто чотири трикутники різної форми, розміру, напряму чи розташування.
Можна помітити, що трикутник розміру 2 складається з 4 будівельних блоків трикутника розміру 1. Трикутник розміру 3 складатиметься з 9 будівельних блоків трикутника розміру 1, а трикутник розміру $n$ складатиметься з $n^2$ будівельник блоків трикутника розміру 1.
Якщо позначити $T(n)$ як кількість трикутників, що містяться в трикутнику розміру $n$, тоді
$$\begin{align} & T(1) = 16 \\\\ & T(2) = 104 \end{align}$$
Знайдіть $T(36)$.
# --hints--
Функція `crossHatchedTriangles()` має повертатися як `343047`.
```js
assert.strictEqual(crossHatchedTriangles(), 343047);
```
# --seed--
## --seed-contents--
```js
function crossHatchedTriangles() {
return true;
}
crossHatchedTriangles();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,40 @@
---
id: 5900f4111000cf542c50ff23
title: >-
Завдання 164: Числа, для яких сума будь-яких трьох послідовних цифр не є більшою за задане значення
challengeType: 5
forumTopicId: 301798
dashedName: >-
problem-164-numbers-for-which-no-three-consecutive-digits-have-a-sum-greater-than-a-given-value
---
# --description--
Скільки 20-значних чисел $n$ (без жодного початкового нуля) існують так, що жодна з трьох послідовних цифр $n$ не має суми, більшої за 9?
# --hints--
`consecutiveDigitsSum()` повинен повертатися як `378158756814587`.
```js
assert.strictEqual(consecutiveDigitsSum(), 378158756814587);
```
# --seed--
## --seed-contents--
```js
function consecutiveDigitsSum() {
return true;
}
consecutiveDigitsSum();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,60 @@
---
id: 5900f4111000cf542c50ff24
title: 'Задача 165: Перетини'
challengeType: 5
forumTopicId: 301799
dashedName: problem-165-intersections
---
# --description--
Сегмент визначається лише двома кінцевими точками. Розглядаючи два відрізки лінії у планіметрії є три можливості: сегменти мають нуль точок, одну точку або нескінченно багато спільних точок.
Крім того, коли два відрізки мають лише одну спільну точку, це може бути той випадок, коли спільною точкою є кінцева точка або одного з окремих сегментів, або обох. Якщо спільна точка двох сегментів не є кінцевою точкою будь-якого із сегментів, то це внутрішня точка обох сегментів.
Ми назвемо спільну точку $T$ двох відрізків $L_1$ і $L_2$ справжньою точкою перетину $L_1$ і $L_2$, якщо $T$ є єдиною спільною точкою $L_1$ і $L_2$ і $T$ є внутрішньою точкою обох відрізків.
Розглянемо три сегменти $L_1$, $L_2$та $L_3$:
$\begin{align} & L_1: (27, 44) \\;\text{to}\\; (12, 32) \\\\ & L_2: (46, 53) \\;\tтекст{to}\\; (17, 62) \\\\ & L_3: (46, 70) \\;\tтекст{to}\\; (22, 40) \\\\ \end{align}$$
Можна перевірити, що відрізки ліній $L_2$ і $L_3$ мають справжню точку перетину. Ми зазначали, що, якщо одна з кінцевих точок $L_3$: (22, 40) лежить на $L_1$, це не вважається справжньою точкою перетину. $L_1$ і $L_2$ не мають спільної точки. Отже, на трьох відрізках прямої ми знаходимо одну справжню точку перетину.
Тепер зробімо те саме для 5000 прямих відрізків. З цією метою ми згенеруємо 20000 чисел, використовуючи так званий генератор псевдо-випадкових чисел «Blum Blum Shub».
$\begin{align} & s_0 = 290797 \\\\ & s_{n + 1} = s_n × s_n (\text{modulo}\\; 50515093) \\\\ & t_n = s_n (\text{modulo}\\; 500) \\\\ \end{align}$
Щоб створити кожен відрізок, ми використовуємо чотири послідовних числа $t_n$. Тобто перший відрізок дано:
($_t$1, $t_2$) до ($t_3$, $t_4$)
Перші чотири числа вичислені згідно зі згаданим генератором, мають бути: 27, 144, 12 та 232. Перший відрізок, таким чином, буде (27, 144) до (12, 232).
Скільки окремих точок перетину буде знайдено серед 5000 відрізків прямих ліній?
# --hints--
`distinctIntersections()` має повертати `2868868`.
```js
assert.strictEqual(distinctIntersections(), 2868868);
```
# --seed--
## --seed-contents--
```js
function distinctIntersections() {
return true;
}
distinctIntersections();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f4131000cf542c50ff25
title: 'Задача 166: Перехресний'
challengeType: 5
forumTopicId: 301800
dashedName: problem-166-criss-cross
---
# --description--
Таблиця 4x4 заповнена цифрами $d$, $0 ≤ d ≤ 9$.
Видно, що в таблиці
$$\begin{array}{} 6 & 3 & 3 & 0 \\\\ 5 & 0 & 4 & 3 \\\\ 0 & 7 & 1 & 4 \\\\ 1 & 2 & 4 & 5 \end{array}$$
сума кожного рядка та кожного стовпця має значення 12. Крім того, сума кожної діагоналі також дорівнює 12.
Скількома способами можна заповнити таблицю 4x4 цифрами $d$, $0 ≤ d ≤ 9$, щоб кожен рядок, кожен стовпець та обидві діагоналі мали однакову суму?
# --hints--
`crissCross()` повинен повертатися як `7130034`.
```js
assert.strictEqual(crissCross(), 7130034);
```
# --seed--
## --seed-contents--
```js
function crissCross() {
return true;
}
crissCross();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f4141000cf542c50ff26
title: 'Задача 167: Дослідження послідовностей Уляма'
challengeType: 5
forumTopicId: 301801
dashedName: problem-167-investigating-ulam-sequences
---
# --description--
Для двох цілих дійсних чисел $a$ і $b$, послідовність Уляма $U(a,b)$ визначається через ${U{(a,b)}\_1} = a$, ${U{(a,b)}\_2} = b$ і для $k > 2$, ${U{(a,b)}\_k}$ найменше ціле число, більше ніж ${U{(a,b)}\_{(k-1)}}$, що може бути записане лише як сума двох різних попередніх членів $U(a,b)$.
Наприклад, послідовність $U(1,2)$ починається з
$$1, 2, 3 = 1 + 2, 4 = 1 + 3, 6 = 2 + 4, 8 = 2 + 6, 11 = 3 + 8$$
5 не належить сюди, тому що $5 = 1 + 4 = 2 + 3$ показує дві однакові суми двох попередніх членів, так само $7 = 1 + 6 = 3 + 4$.
Знайдіть $\sum {U(2, 2n + 1)_k}$ по $2 ≤ n 10$, де $k = {10}^{11}$.
# --hints--
`ulamSequences()` має повертати `3916160068885`.
```js
assert.strictEqual(ulamSequences(), 3916160068885);
```
# --seed--
## --seed-contents--
```js
function ulamSequences() {
return true;
}
ulamSequences();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f4151000cf542c50ff27
title: 'Задача 168: Обертання чисел'
challengeType: 5
forumTopicId: 301802
dashedName: problem-168-number-rotations
---
# --description--
Розглянемо число 142857. Ми можемо повернути це число праворуч, перемістивши останню цифру (7) перед ним, що дасть нам 714285.
Можна перевірити, що $714285 = 5 × 142857$.
Це показує незвичайну властивість 142857: це дільник її обертання вправо.
Знайдіть останні 5 цифр суми всіх цілих чисел $n$, $ 10 &lt;; n &lt;; 10100$, які мають цю властивість.
# --hints--
`numberRotations()` має повертати `59206`.
```js
assert.strictEqual(numberRotations(), 59206);
```
# --seed--
## --seed-contents--
```js
function numberRotations() {
return true;
}
numberRotations();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f4151000cf542c50ff28
title: >-
Задача 169: Дослідження кількості різноманітних способів, якими можна записати число як суму степенів 2
challengeType: 5
forumTopicId: 301803
dashedName: >-
problem-169-exploring-the-number-of-different-ways-a-number-can-be-expressed-as-a-sum-of-powers-of-2
---
# --description--
Визначте, що $f(0)=1$ та $f(n)$ буде кількістю різних способів, за якими $n$ може бути виражено у вигляді суми цілих чисел 2 степеня використовуючи кожен степінь не більше ніж двічі.
Наприклад: $f(10)=5$, оскільки існує 5 різних способів виразити 10:
$$\begin{align} & 1 + 1 + 8 \\\\ & 1 + 1 + 4 + 4 \\\\ & 1 + 1 + 2 + 2 + 4 \\\\ & 2 + 4 + 4 \\\\ & 2 + 8 \end{align}$$
Що таке $f({10}^{25})$?
# --hints--
`numberOfWaysToExpress()` має відображати `178653872807`.
```js
assert.strictEqual(numberOfWaysToExpress(), 178653872807);
```
# --seed--
## --seed-contents--
```js
function numberOfWaysToExpress() {
return true;
}
numberOfWaysToExpress();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,130 @@
---
id: 5900f37d1000cf542c50fe90
title: 'Завдання 17: Підрахунок букв у числівниках'
challengeType: 5
forumTopicId: 301804
dashedName: problem-17-number-letter-counts
---
# --description--
Якщо числа від 1 до 5 записати словами (one, two, three, four, five), то загалом буде використано 3 + 3 + 5 + 4 + 4 = 10 букв.
Якщо числа від 1 до заданого `limit` включно записати словами, скільки букв потрібно було б використати?
**Note:** Не враховуйте пробіли чи дефіси. Наприклад, 342 (three hundred and forty-two) складається з 23 літер, а 115 (one hundred and fifteen) - з 20. Використання "and" при написанні чисел відповідає правилам Британської англійської.
# --hints--
`numberLetterCounts(5)` має повернути число.
```js
assert(typeof numberLetterCounts(5) === 'number');
```
`numberLetterCounts(5)` має повернути число 19.
```js
assert.strictEqual(numberLetterCounts(5), 19);
```
`numberLetterCounts(150)` має повернути число 1903.
```js
assert.strictEqual(numberLetterCounts(150), 1903);
```
`numberLetterCounts(1000)` має повернути число 21124.
```js
assert.strictEqual(numberLetterCounts(1000), 21124);
```
# --seed--
## --seed-contents--
```js
function numberLetterCounts(limit) {
return true;
}
numberLetterCounts(5);
```
# --solutions--
```js
function numberLetterCounts(limit) {
const dictionary = {
0: '',
1: 'one',
2: 'two',
3: 'three',
4: 'four',
5: 'five',
6: 'six',
7: 'seven',
8: 'eight',
9: 'nine',
10: 'ten',
11: 'eleven',
12: 'twelve',
13: 'thirteen',
14: 'fourteen',
15: 'fifteen',
16: 'sixteen',
17: 'seventeen',
18: 'eighteen',
19: 'nineteen',
20: 'twenty',
30: 'thirty',
40: 'forty',
50: 'fifty',
60: 'sixty',
70: 'seventy',
80: 'eighty',
90: 'ninety',
1000: 'onethousand'
};
let numString = '';
function convertToString(num) {
// check dictionary for number
if (dictionary[num]) {
return dictionary[num];
} else {
const hundreds = Math.floor(num / 100);
const tens = Math.floor((num / 10) % 10) * 10;
const remainder = num % 10;
let tempStr = '';
if (hundreds === 0) {
tempStr += dictionary[tens] + dictionary[remainder];
} else {
tempStr += dictionary[hundreds] + 'hundred';
if (tens !== 0 || remainder !== 0) {
tempStr += 'and';
}
if (tens < 20) {
const lessThanTwenty = tens + remainder;
tempStr += dictionary[lessThanTwenty];
} else {
tempStr += dictionary[tens] + dictionary[remainder];
}
}
return tempStr;
}
}
for (let i = 1; i <= limit; i++) {
numString += convertToString(i);
}
return numString.length;
}
```

View File

@ -0,0 +1,48 @@
---
id: 5900f4161000cf542c50ff29
title: >-
Завдання 170: Знайдіть найбільше число від 0 до 9, яке можна утворити шляхом об'єднання добутків
challengeType: 5
forumTopicId: 301805
dashedName: >-
problem-170-find-the-largest-0-to-9-pandigital-that-can-be-formed-by-concatenating-products
---
# --description--
Помножте число 6 на кожне з 1273 і 9854:
$$\begin{align} & 6 × 1273 = 7638 \\\\ & 6 × 9854 = 59124 \\\\ \end{align}$$
Об’єднавши ці добутки, отримуємо панцифрове число від 1 до 9 - 763859124. Нехай 763859124 — об'єднаний добуток 6 і (1273, 9854)". Зауважте також, що об'єднання вхідних чисел 612739854 також становить панцифрове число від 1 до 9.
Те ж саме можна зробити для 0 - 9 панцифрових чисел.
Що є найбільшим 10-значним об'єднаним добутком цілого числа від 0 до 9, з двома або більше іншими цілими числами, таким чином, що об'єднання вхідних чисел також є панцифровим 10-значним числом від 0 до 9?
# --hints--
`largestPandigital()` має повертати `9857164023`.
```js
assert.strictEqual(largestPandigital(), 9857164023);
```
# --seed--
## --seed-contents--
```js
function largestPandigital() {
return true;
}
largestPandigital();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f4181000cf542c50ff2a
title: >-
Завдання 171: Пошук чисел, для яких сума квадратів чисел — це квадрат
challengeType: 5
forumTopicId: 301806
dashedName: >-
problem-171-finding-numbers-for-which-the-sum-of-the-squares-of-the-digits-is-a-square
---
# --description--
Для додатного цілого числа $n$, нехай $f(n)$ — це сума квадратів чисел (з основою 10) $n$, наприклад.
$$\begin{align} & f(3) = 3^2 = 9 \\\\ & f(25) = 2^2 + 5^2 = 4 + 25 = 29 \\\\ & f(442) = 4^2 + 4^2 + 2^2 = 16 + 16 + 4 = 36 \\\\ \end{align}$$
Знайдіть останні дев'ять чисел суми усіх $n$, $0 &lt; n &lt; {10}^{20}$, якщо $f(n)$ є повним квадратом.
# --hints--
`lastDigitsSumOfPerfectSquare()` має повертати `142989277`.
```js
assert.strictEqual(lastDigitsSumOfPerfectSquare(), 142989277);
```
# --seed--
## --seed-contents--
```js
function lastDigitsSumOfPerfectSquare() {
return true;
}
lastDigitsSumOfPerfectSquare();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,38 @@
---
id: 5900f4181000cf542c50ff2b
title: 'Завдання 172: Дослідження чисел з кількома повторюваними цифрами'
challengeType: 5
forumTopicId: 301807
dashedName: problem-172-investigating-numbers-with-few-repeated-digits
---
# --description--
Скільки існує 18-значних чисел $n$ (що не починаються нулем), у яких жодна цифра не зустрічається більше ніж три рази в $n$?
# --hints--
`numbersWithRepeatedDigits()` має повертати `227485267000992000`.
```js
assert.strictEqual(numbersWithRepeatedDigits(), 227485267000992000);
```
# --seed--
## --seed-contents--
```js
function numbersWithRepeatedDigits() {
return true;
}
numbersWithRepeatedDigits();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f41a1000cf542c50ff2c
title: >-
Завдання 173: Скільки різних квадратних рамок можна сформувати з близько мільйона плиток?
challengeType: 5
forumTopicId: 301808
dashedName: >-
problem-173-using-up-to-one-million-tiles-how-many-different-hollow-square-laminae-can-be-formed
---
# --description--
Нехай квадратна рамка — це квадратний контур з квадратним «отвором», а горизонтальні та вертикальні сторони — симетричні. Наприклад, з тридцяти двох квадратних плиток можна сформувати дві різні квадратні рамки:
<img class="img-responsive center-block" alt="дві квадратні рамки з отворами 2х2 та 7х7" src="https://cdn.freecodecamp.org/curriculum/project-euler/using-up-to-one-million-tiles-how-many-different-hollow-square-laminae-can-be-formed.gif" style="background-color: white; padding: 10px;" />
З сотні плиток можна сформувати сорок одну різну квадратну пластинку, при цьому необов'язково використовувати всі плитки одночасно. Скільки різних квадратних рамок можна утворити за допомогою одного мільйона плиток?
# --hints--
`differentHollowSquareLaminae()` має повернути `1572729`.
```js
assert.strictEqual(differentHollowSquareLaminae(), 1572729);
```
# --seed--
## --seed-contents--
```js
function differentHollowSquareLaminae() {
return true;
}
differentHollowSquareLaminae();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,50 @@
---
id: 5900f41a1000cf542c50ff2d
title: >-
Завдання 174: Підрахунок кількості квадратних рамок, які можуть утворювати одну, дві, три, ... різні композиції
challengeType: 5
forumTopicId: 301809
dashedName: >-
problem-174-counting-the-number-of-hollow-square-laminae-that-can-form-one-two-three-----distinct-arrangements
---
# --description--
Нехай квадратна рамка — квадратний контур з квадратним «отвором», у якому вертикальні та горизонтальні сторони — симетричні.
З восьми плиток можна сформувати рамку лише одним способом: квадрат 3x3 з отвором 1x1 посередині. Однак з тридцяти двох плиток можна сформувати дві окремі рамки.
<img class="img-responsive center-block" alt="дві квадратні рамки з отворами 2х2 та 7х7" src="https://cdn.freecodecamp.org/curriculum/project-euler/using-up-to-one-million-tiles-how-many-different-hollow-square-laminae-can-be-formed.gif" style="background-color: white; padding: 10px;" />
Якщо $t$ — кількість використаних плиток, то $t = 8$ є типом $L(1)$, а $t= 32$ є типом $L(2)$.
Нехай $N(n)$ — це число $t ≤ 1000000$ таке, що $t$ є типом $L(n)$; наприклад, $N(15) = 832$.
Знайдіть $\сума N(n)$ для $1 ≤ n ≤ 10$?
# --hints--
`hollowSquareLaminaeDistinctArrangements()` має повернути `209566`.
```js
assert.strictEqual(hollowSquareLaminaeDistinctArrangements(), 209566);
```
# --seed--
## --seed-contents--
```js
function hollowSquareLaminaeDistinctArrangements() {
return true;
}
hollowSquareLaminaeDistinctArrangements();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,62 @@
---
id: 5900f41c1000cf542c50ff2e
title: >-
Завдання 175: Дроби, що включають різні способи, як записати число, виразивши суму степенів 2
challengeType: 5
forumTopicId: 301810
dashedName: >-
problem-175-fractions-involving-the-number-of-different-ways-a-number-can-be-expressed-as-a-sum-of-powers-of-2
---
# --description--
Нехай $f(0) = 1$ і $f(n)$ — кількість способів записати $n$ як суму квадратів, де жоден з степенів не зустрічається більше двох разів.
Наприклад, $f(10) = 5$, бо існує 5 різних способів для вираження 10:
$$10 = 8 + 2 = 8 + 1 + 1 = 4 + 4 + 2 = 4 + 2 + 2 + 1 + 1 = 4 + 4 + 1 + 1$$
Можна показати, що для кожного дріб $\frac{p}{q}\\; (p>0, q>0)$ існує принаймні одне ціле число $n$, а $\frac{f(n)}{f(n - 1)} = \frac{p}{q}$.
Наприклад, найменше $n$, за якого $\frac{f(n)}{f(n - 1)} = \frac{13}{17}$ є 241. Бінарне розширення 241 складає 11110001.
Зчитування цього бінарного числа від найбільш значущого біта до найменш значущого біта містить 4 одиниці, 3 нулі і 1 одиницю. Назвемо ряд 4,3,1 скороченим бінарним розширенням 241.
Знайдіть скорочене бінарне розширення найменшого $n$ для якого
$$\frac{f(n)}{f(n - 1)} = \frac{123456789}{987654321}$$
Запишіть відповідь як ряд з цілими числами, розділеними комами, без пробілів.
# --hints--
`shortenedBinaryExpansionOfNumber()` має повертати рядок.
```js
assert(typeof shortenedBinaryExpansionOfNumber() === 'string');
```
`shortenedBinaryExpansionOfNumber()` має повертати рядок `1,13717420,8`.
```js
assert.strictEqual(shortenedBinaryExpansionOfNumber(), '1,13717420,8');
```
# --seed--
## --seed-contents--
```js
function shortenedBinaryExpansionOfNumber() {
return true;
}
shortenedBinaryExpansionOfNumber();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,40 @@
---
id: 5900f41c1000cf542c50ff2f
title: 'Завдання 176: Прямокутні трикутники з спільним катетом'
challengeType: 5
forumTopicId: 301811
dashedName: problem-176-right-angled-triangles-that-share-a-cathetus
---
# --description--
У кожного з чотирьох прямокутних трикутників із сторонами (9,12,15), (12,16,20), (5,12,13) і (12,35,37), менший катет дорівнює 12. Можна довести, що не існує іншого прямокутного трикутника, у якого довжини сторін це цілі числа, з катетом, що дорівнює 12.
Знайдіть найменше ціле число, яке може бути довжиною катета 47547 різних прямокутних трикутників зі сторонами рівним цілому числу.
# --hints--
`trianglesSharingCathetus()` має повернути `96818198400000`.
```js
assert.strictEqual(trianglesSharingCathetus(), 96818198400000);
```
# --seed--
## --seed-contents--
```js
function trianglesSharingCathetus() {
return true;
}
trianglesSharingCathetus();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,48 @@
---
id: 5900f41e1000cf542c50ff30
title: 'Завдання 177: Чотирикутники з цілими кутами'
challengeType: 5
forumTopicId: 301812
dashedName: problem-177-integer-angled-quadrilaterals
---
# --description--
Нехай ABCD — опуклий чотирикутник з діагоналями AC та BD. При кожній вершині діагональ утворює кут з обома сторонами, тобто маємо вісім кутів.
<img class="img-responsive center-block" alt="опуклий чотирикутник ABCD з діагоналями AC та BD" src="https://cdn.freecodecamp.org/curriculum/project-euler/integer-angled-quadrilaterals.gif" style="background-color: white; padding: 10px;" />
До прикладу, при вершині А є два кути — CAD та CAB.
Чотирикутник, вісім кутів якого мають цілі значення у градусах, називається чотирикутником з цілими кутами. Прикладом такого чотирикутника є квадрат з кутами по 45°. Ще одним прикладом такого чотирикутника може бути чотирикутник з кутами: DAC = 20°, BAC = 60°, ABD = 50°, CBD = 30°, BCA = 40°, DCA = 30°, CDB = 80°, ADB = 50°.
Яка загальна кількість неподібних чотирикутників з цілими кутами?
**Примітка:** В розрахунках можна припустити, що обчислений кут є цілим, якщо він знаходиться у межах ${10}^{-9}$ цілого значення.
# --hints--
`integerAngledQuadrilaterals()` має повертати `129325`.
```js
assert.strictEqual(integerAngledQuadrilaterals(), 129325);
```
# --seed--
## --seed-contents--
```js
function integerAngledQuadrilaterals() {
return true;
}
integerAngledQuadrilaterals();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f41e1000cf542c50ff31
title: 'Завдання 178: Крокові числа'
challengeType: 5
forumTopicId: 301813
dashedName: problem-178-step-numbers
---
# --description--
Розглянемо число 45656.
Зауважимо, що будь-які дві послідовні цифри відрізняються на одиницю.
Число, в якому будь-які дві цифри, що стоять поряд, відрізняються на одиницю, називається кроковим числом.
У панцифровому числі кожна десяткова цифра від 0 до 9 зустрічається хоча б раз.
Скільки існує панцифрових крокових чисел, менших за ${10}^{40}$?
# --hints--
`stepNumbers()` має повертати `126461847755`.
```js
assert.strictEqual(stepNumbers(), 126461847755);
```
# --seed--
## --seed-contents--
```js
function stepNumbers() {
return true;
}
stepNumbers();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,38 @@
---
id: 5900f41f1000cf542c50ff32
title: 'Завдання 179: Послідовні додатні дільники'
challengeType: 5
forumTopicId: 301814
dashedName: problem-179-consecutive-positive-divisors
---
# --description--
Знайдіть кількість цілих чисел $1 &lt; n &lt; {10}^7$, для яких $n$ і $n + 1$ мають однакову кількість додатних дільників. Наприклад, число 14 має додатні дільники 1, 2, 7 і 14, а число 15 — 1, 3, 5, 15.
# --hints--
`consecutivePositiveDivisors()` має повертати `986262`.
```js
assert.strictEqual(consecutivePositiveDivisors(), 986262);
```
# --seed--
## --seed-contents--
```js
function consecutivePositiveDivisors() {
return true;
}
consecutivePositiveDivisors();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,109 @@
---
id: 5900f37e1000cf542c50fe91
title: 'Завдання 18: Максимальна сума шляху I'
challengeType: 5
forumTopicId: 301815
dashedName: problem-18-maximum-path-sum-i
---
# --description--
Починаючи із вершини трикутника, зображеного нижче, і рухаючись до суміжних чисел у рядку нижче, максимальна сума згори донизу дорівнюватиме 23.
<span style='display: block; text-align: center;'>
<strong style='color: red;'>3</strong><br>
<strong style='color: red;'>7</strong> 4<br>
2 <strong style='color: red;'>4</strong> 6<br>
8 5 <strong style='color: red;'>9</strong> 3
</span>
Тобто 3 + 7 + 4 + 9 = 23.
Знайдіть максимальну суму шляху від вершини до основи у трикутнику, зображеному нижче:
75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23
**Note:** Оскільки у цьому випадку є тільки 16384 шляхи, то дане завдання можна розв'язати, перевіривши кожен маршрут. Однак завдання 67 є тією самою задачею із трикутником, що має 100 рядків і яку не можна розв'язати за допомогою методу перебору, вона вимагає розумного підходу! ;o)
# --hints--
`maximumPathSumI(testTriangle)` має повернути число.
```js
assert(typeof maximumPathSumI(testTriangle) === 'number');
```
`maximumPathSumI(testTriangle)` має повернути число 23.
```js
assert.strictEqual(maximumPathSumI(testTriangle), 23);
```
`maximumPathSumI(numTriangle)` має повернути число 1074.
```js
assert.strictEqual(maximumPathSumI(numTriangle), 1074);
```
# --seed--
## --before-user-code--
```js
const numTriangle = [[75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [17, 47, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [18, 35, 87, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [20, 4, 82, 47, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [19, 1, 23, 75, 3, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0], [88, 2, 77, 73, 7, 63, 67, 0, 0, 0, 0, 0, 0, 0, 0], [99, 65, 4, 28, 6, 16, 70, 92, 0, 0, 0, 0, 0, 0, 0], [41, 41, 26, 56, 83, 40, 80, 70, 33, 0, 0, 0, 0, 0, 0], [41, 48, 72, 33, 47, 32, 37, 16, 94, 29, 0, 0, 0, 0, 0], [53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14, 0, 0, 0, 0], [70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57, 0, 0, 0], [91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48, 0, 0], [63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31, 0], [4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23]];
```
## --seed-contents--
```js
function maximumPathSumI(triangle) {
return true;
}
const testTriangle = [[3, 0, 0, 0],
[7, 4, 0, 0],
[2, 4, 6, 0],
[8, 5, 9, 3]];
maximumPathSumI(testTriangle);
```
# --solutions--
```js
const testTriangle = [[3, 0, 0, 0],
[7, 4, 0, 0],
[2, 4, 6, 0],
[8, 5, 9, 3]];
function maximumPathSumI(triangle) {
let maxSum = triangle.slice();
for (let i = triangle.length - 1; i > 0; i--) {
let currentRow = maxSum[i];
let previousRow = maxSum[i - 1];
const temp = [];
for (let j = 0; j < i; j++) {
temp.push(Math.max((currentRow[j] + previousRow[j]), (currentRow[j + 1] + previousRow[j])));
}
maxSum[i - 1] = temp;
maxSum.pop();
}
return maxSum[0][0];
}
```

View File

@ -0,0 +1,52 @@
---
id: 5900f4201000cf542c50ff33
title: 'Завдання 180: Раціональні нулі функції з трьома змінними'
challengeType: 5
forumTopicId: 301816
dashedName: problem-180-rational-zeros-of-a-function-of-three-variables
---
# --description--
Для будь-якого цілого числа $n$ розглянемо три функції
$$\begin{align} & f_{1,n}(x,y,z) = x^{n + 1} + y^{n + 1} z^{n + 1}\\\\ & f_{2,n}(x,y,z) = (xy + yz + zx) \times (x^{n - 1} + y^{n - 1} z^{n - 1})\\\\ & f_{3,n}(x,y,z) = xyz \times (x^{n - 2} + y^{n - 2} z^{n - 2}) \end{align}$$
та їхню комбінацію
$$\begin{align} & f_n(x,y,z) = f_{1,n}(x,y,z) + f_{2,n}(x,y,z) f_{3,n}(x,y,z) \end{align}$$
$(x,y,z)$ ми називаємо золотою трійкою послідовності $k$, якщо $x$, $y$ і $z$ є раціональними числами форми $\frac{a}{b}$ with $0 &lt; a &lt; b ≤ k$ і є хоча б одне ціле число $n$, щоб виконувалася рівність $f_n(x,y,z) = 0$.
Нехай $s(x,y,z) = x + y + z$.
Нехай $t = \frac{u}{v}$ є сумою всіх різних $s(x,y,z)$ для золотих трійок $(x,y,z)$ послідовності 35. Всі $s(x,y,z)$ і $t$ повинні бути в скороченій формі.
Знайдіть $u + v$.
# --hints--
`rationalZeros()` повинен повернутися як `285196020571078980`.
```js
assert.strictEqual(rationalZeros(), 285196020571078980);
```
# --seed--
## --seed-contents--
```js
function rationalZeros() {
return true;
}
rationalZeros();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f4231000cf542c50ff34
title: >-
Завдання 181: Скількома способами можна згрупувати об'єкти двох різних кольорів
challengeType: 5
forumTopicId: 301817
dashedName: >-
problem-181-investigating-in-how-many-ways-objects-of-two-different-colours-can-be-grouped
---
# --description--
Три чорних об'єкти $B$ і один білий об'єкт $W$ можна згрупувати сімома способами:
$$(BBBW)\\;(B,BBW)\\;(B,B,BW)\\;(B,B,B,W)\\;(B,BB,W)\\;(BBB,W)\\;(BB,BW)$$
Скількома способами можна згрупувати шістдесят чорних об'єктів $B$ та сорок білих об'єктів $W$?
# --hints--
`colorsGrouping()` має повертати `83735848679360670`.
```js
assert.strictEqual(colorsGrouping(), 83735848679360670);
```
# --seed--
## --seed-contents--
```js
function colorsGrouping() {
return true;
}
colorsGrouping();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,102 @@
---
id: 5900f4231000cf542c50ff35
title: 'Завдання 182: шифрування RSA'
challengeType: 5
forumTopicId: 301818
dashedName: problem-182-rsa-encryption
---
# --description--
Шифрування RSA базується на наступній процедурі:
Згенерувати два різні простих числа `p` і `q`. Обчислити `n=p*q` і `φ=(p-1)(q-1)`. Знайдіть ціле число `e`, `1 < e < φ`, якщо `gcd(e,φ) = 1`
Повідомлення в цій системі — це число в інтервалі `[0,n-1]`. Текст, що буде зашифровано, певним чином перетворюється на повідомлення (числа з інтервалом `[0,n-1]`). Щоб зашифрувати текст, для кожного повідомлення обчислюється `m`, c=m<sup>e</sup> mod n.
Щоб розшифрувати текст, необхідна наступна процедура: порахуйте `d`, якщо `ed=1 mod φ`, тоді для кожного зашифрованого повідомлення `c` обчисліть m=c<sup>d</sup> mod n.
Виявлено значення `e` і `m` такі, що m<sup>e</sup> мод n = m. Ми називаємо повідомлення `m`, для яких m<sup>e</sup> мод n=m, неприхованими.
Проблема при виборі `e` полягає в тому, що не має бути занадто багато неприхованих повідомлень. Наприклад, нехай `p=19` і `q=37`. Потім `n=19*37=703` і `φ=18*36=648`. Якщо ми вибираємо `e=181`, то хоча `gcd(181,648)=1`, виявляється, що всі можливі повідомлення m `(0≤m≤n-1)` неприховані при розрахунку m<sup>e</sup> мод n. Для будь-якого відповідного вибору `e` існує декілька неприхованих повідомлень. Важливо, що кількість неприхованих повідомлень має бути мінімальною.
Для будь-якого заданого `p` і `q`, знайдіть суму всіх значень `e`, `1< e < φ(p,q)` і `gcd(e,φ)=1`, так, щоб кількість неприхованих повідомлень для цього значення `e` була мінімальною.
# --hints--
`RSAEncryption` має бути функцією.
```js
assert(typeof RSAEncryption === 'function')
```
`RSAEncryption` має повертати число.
```js
assert.strictEqual(typeof RSAEncryption(19, 37), 'number');
```
`RSAEncryption(19, 37)` має повертати `17766`.
```js
assert.strictEqual(RSAEncryption(19, 37), 17766);
```
`RSAEncryption(283, 409)` має повертати `466196580`.
```js
assert.strictEqual(RSAEncryption(283, 409), 466196580);
```
`RSAEncryption(1009, 3643)` має повертати `399788195976`.
```js
assert.strictEqual(RSAEncryption(19, 37), 17766);
```
# --seed--
## --seed-contents--
```js
function RSAEncryption(p, q) {
return true;
}
RSAEncryption(19, 37);
```
# --solutions--
```js
function gcd(a, b) {
if (b)
return gcd(b, a % b);
else
return a;
}
function RSAEncryption(p, q) {
let phi = (p - 1) * (q - 1);
let best = Number.MAX_SAFE_INTEGER;
let sum = 0;
for (let e = 0; e < phi; ++e) {
if (!(gcd(e, phi) == 1))
continue;
let msg = (gcd(p - 1, e - 1) + 1) * (gcd(q - 1, e - 1) + 1);
if (best == msg) {
sum += e;
} else if (best > msg) {
best = msg;
sum = e;
}
}
return sum;
}
```

View File

@ -0,0 +1,54 @@
---
id: 5900f4231000cf542c50ff36
title: 'Задача 183: Максимальний добуток часток'
challengeType: 5
forumTopicId: 301819
dashedName: problem-183-maximum-product-of-parts
---
# --description--
Нехай $N$ є цілим додатним числом і нехай $N$ розбивається на $k$ рівних частин, $r = \ frac {N}{k}$, так що $N = r + r + \cdots + r$.
Нехай $P$ - добуток цих частин, $P = r × r × \cdots × r = r^k$.
Наприклад, якщо 11 розділити на п'ять рівних частин, 11 = 2,2 + 2,2 + 2,2 + 2,2 + 2,2, то $P = {2.2}^5 = 51,53632$.
Нехай $M(N) = P_{max}$ для заданого значення $N$.
Виявляється, максимум для $N = 11$ визначається шляхом поділу одинадцяти на чотири рівні частини, що призводить до $P_{max} = {(\ frac{11} {4})}^4 $; тобто $M(11) = \frac {14641}{256} = 57.19140625$, що є кінцевим десятковим числом.
Однак для $N = 8$ максимум досягається шляхом поділу його на три рівні частини, тому $M(8) = \frac{512}{27}$, що є десятковим числом, що не закінчується.
Нехай $D(N) = N$, якщо $M(N)$ є десятковим числом, що не закінчується, і $D(N) = -N$, якщо $M(N)$ є кінцевим десятковим числом.
Наприклад, $\sum D(N)$ для $5 ≤ N ≤ 100$ дорівнює 2438.
Find $\суму D(N)$ для $5 ≤ N ≤ 10000$.
# --hints--
`maximumProductOfParts()` повинен повертатися `48861552`.
```js
assert.strictEqual(maximumProductOfParts(), 48861552);
```
# --seed--
## --seed-contents--
```js
function maximumProductOfParts() {
return true;
}
maximumProductOfParts();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,46 @@
---
id: 5900f4241000cf542c50ff37
title: 'Завдання 184: трикутники, що містять початок координат'
challengeType: 5
forumTopicId: 301820
dashedName: problem-184-triangles-containing-the-origin
---
# --description--
Розглянемо множину $I_r$ точок $(x,y)$ з цілочисленими координатами всередині кола з радіусом $r$ з центром у початку координат, тобто: $x^2 + y^2 &lt; r^2$.
Якщо радіус дорівнює 2, тоді $I_2$ містить точки (0,0), (1,0), (1,1), (0,1), (-1,1), (-1,0), (-1,-1), (0,-1) і (1,-1). Існує вісім трикутників з трьома вершинами в $I_2$, які всередині містять початок координат. Два з них наведено нижче, а решта отримується завдяки їх повертанню.
<img class="img-responsive center-block" alt="радіус кола, який дорівнює 2, із центром у початку координат, з дев'ятьма позначеними точками й двома трикутниками - (-1,0), (0,1), (1,-1) і (-1,1), (0,-1), (1,1)" src="https://cdn.freecodecamp.org/curriculum/project-euler/triangles-containing-the-origin.gif" style="background-color: white; padding: 10px;" />
Якщо радіус дорівнює 3, існує 360 трикутників, які містять початок координат всередині й для яких всі вершини в $I_3$, а для $I_5$ їх кількість дорівнює 10600.
Скільки існує трикутників, які містять початок координат всередині й для яких всі вершини в $I_{105}$?
# --hints--
`trianglesConttainingOrigin()` має повертати `1725323624056`.
```js
assert.strictEqual(trianglesConttainingOrigin(), 1725323624056);
```
# --seed--
## --seed-contents--
```js
function trianglesContainingOrigin() {
return true;
}
trianglesContainingOrigin();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,52 @@
---
id: 5900f4251000cf542c50ff38
title: 'Завдання 185: Number Mind'
challengeType: 5
forumTopicId: 301821
dashedName: problem-185-number-mind
---
# --description--
Гра Number Mind є варіантом відомої гри Master Mind.
Замість кольорових кілочків, ви повинні вгадати секретну послідовність цифр. Після кожної здогадки вам показують тільки ті цифри послідовності, які ви вгадали. Отже, якщо послідовність була 1234, а ви вказали 2036, то маєте одну правильну цифру; однак, вам не покажуть, що ви вгадали також ще одну цифру, але у неправильному місці.
Наприклад, для секретної послідовності 5 цифр,
$$\begin{align} & 90342 ;2\\;\text{correct}\\\\ & 70794 ;0\\;\text{correct}\\\\ & 39458 ;2\\;\text{correct}\\\\ & 34109 ;1\\;\text{correct}\\\\ & 51545 ;2\\;\text{correct}\\\\ & 12531 ;1\\;\text{correct} \end{align}$$
Правильна послідовність 39542 унікальна.
На основі наступних здогадок,
$$\begin{align} & 5616185650518293 ;2\\;\text{correct}\\\\ & 3847439647293047 ;1\\;\text{correct}\\\\ & 5855462940810587 ;3\\;\text{correct}\\\\ & 9742855507068353 ;3\\;\text{correct}\\\\ & 4296849643607543 ;3\\;\text{correct}\\\\ & 3174248439465858 ;1\\;\text{correct}\\\\ & 4513559094146117 ;2\\;\text{correct}\\\\ & 7890971548908067 ;3\\;\text{correct}\\\\ & 8157356344118483 ;1\\;\text{correct}\\\\ & 2615250744386899 ;2\\;\text{correct}\\\\ & 8690095851526254 ;3\\;\text{correct}\\\\ & 6375711915077050 ;1\\;\text{correct}\\\\ & 6913859173121360 ;1\\;\text{correct}\\\\ & 6442889055042768 ;2\\;\text{correct}\\\\ & 2321386104303845 ;0\\;\text{correct}\\\\ & 2326509471271448 ;2\\;\text{correct}\\\\ & 5251583379644322 ;2\\;\text{correct}\\\\ & 1748270476758276 ;3\\;\text{correct}\\\\ & 4895722652190306 ;1\\;\text{correct}\\\\ & 3041631117224635 ;3\\;\text{correct}\\\\ & 1841236454324589 ;3\\;\text{correct}\\\\ & 2659862637316867 ;2\\;\text{correct} \end{align}$$
Знайдіть унікальну секретну послідовність з 16 цифр.
# --hints--
`numberMind()` має повернути `4640261571849533`.
```js
assert.strictEqual(numberMind(), 4640261571849533);
```
# --seed--
## --seed-contents--
```js
function numberMind() {
return true;
}
numberMind();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,57 @@
---
id: 5900f4281000cf542c50ff39
title: 'Завдання 186: Підключення до мережі'
challengeType: 5
forumTopicId: 301822
dashedName: problem-186-connectedness-of-a-network
---
# --description--
Ось записи з зайнятої телефонної системи з мільйоном користувачів:
| RecNr | Абонент | Дзвонили |
| ----- | ------- | -------- |
| 1 | 200007 | 100053 |
| 2 | 600183 | 500439 |
| 3 | 600863 | 701497 |
| ... | ... | ... |
Телефонний номер абонента і набраний номер у записі $n$ є $Caller(n) = S_{2n - 1}$ та $Called(n) = S_{2n}$, де ${S}_{1,2,3,\ldots}$ утворюється через "Генератор Фібоначчі":
Для $1 ≤ k ≤ 55$, $S_k = [100003 - 200003k + 300007{k}^3]\\;(\text{modulo}\\;1000000)$
Для $56 ≤ k$, $S_k = [S_{k - 24} + S_{k - 55}]\\;(\text{modulo}\\;1000000)$
Якщо $Caller(n) = Called(n)$ вважається, що користувач помилився номером і стався збій виклику, в іншому випадку виклик успішний.
Від початку записів ми кажемо, що будь-яка пара користувачів $X$ та $Y$ - друзі, якщо $X$ телефонує $Y$ або навпаки. Аналогічно $X$ є другом друга $Z$, якщо $X$ є друг $Y$ і $Y$ є другом $Z$; і так далі в довших ланцюжках.
Номер телефону прем'єр-міністра - 524287. Після скількох успішних викликів, не рахуючи збої викликів, 99% користувачів (включаючи прем'єр-міністра) будуть друзями, або друзями друзів і т. д. прем'єр-міністра?
# --hints--
`connectednessOfANetwork()` повинен повернути `2325629`.
```js
assert.strictEqual(connectednessOfANetwork(), 2325629);
```
# --seed--
## --seed-contents--
```js
function connectednessOfANetwork() {
return true;
}
connectednessOfANetwork();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,42 @@
---
id: 5900f4291000cf542c50ff3a
title: 'Завдання 187: Напівпрості числа'
challengeType: 5
forumTopicId: 301823
dashedName: problem-187-semiprimes
---
# --description--
Складене число - число, яке складається зі щонайменше двох простих множників. Наприклад, $15 = 3 × 5; 9 = 3 × 3; 12 = 2 × 2 × 3$.
Є десять складених чисел менших від тридцяти, що містять саме два, не обов'язково різні, прості множники: 4, 6, 9, 10, 14, 15, 21, 22, 25, 26.
Скільки складених чисел $n &lt; {10}^8$ мають саме два, не обов'язково різні, прості множники?
# --hints--
`semiPrimes()` має повернути `17427258`.
```js
assert.strictEqual(euler187(), 17427258);
```
# --seed--
## --seed-contents--
```js
function semiPrimes() {
return true;
}
semiPrimes();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,44 @@
---
id: 5900f4291000cf542c50ff3b
title: 'Задача 188: Гіперекспонентація числа'
challengeType: 5
forumTopicId: 301824
dashedName: problem-188-the-hyperexponentiation-of-a-number
---
# --description--
Гіперекспонентація, або тетрація числа $a$ додатним цілим числом $b$, яка позначається $a↑↑b$ або ${}^ba$, рекурсивно визначається так:
$a↑↑1 = a$,
$a↑↑(k+1) = a^{(a↑↑k)}$.
Таким чином, маємо, наприклад, $3↑↑2 = 3^3 = 27$, отже $3↑↑3 = 3^{27} = 7625597484987$ і $3↑↑4$ приблизно дорівнюють ${10}^{3.6383346400240996 \times {10}^{12}}$. Знайдіть останні 8 цифр із $1777↑↑1855$.
# --hints--
`hyperexponentation()` має повертати до `95962097`.
```js
assert.strictEqual(hyperexponentation(), 95962097);
```
# --seed--
## --seed-contents--
```js
function hyperexponentation() {
return true;
}
hyperexponentation();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,50 @@
---
id: 5900f4291000cf542c50ff3c
title: 'Задача 189: Заповнення трикутної сітки трьома кольорами'
challengeType: 5
forumTopicId: 301825
dashedName: problem-189-tri-colouring-a-triangular-grid
---
# --description--
Розглянемо наступні налаштування для 64 трикутників:
<img class="img-responsive center-block" alt="64 трикутники, розміщені таким чином, що утворюють більший трикутник зі сторонами довжиною в 8 трикутників" src="https://cdn.freecodecamp.org/curriculum/project-euler/tri-colouring-a-triangular-grid-1.gif" style="background-color: white; padding: 10px;" />
Ми хочемо заповнити внутрішню область кожного трикутника одним із трьох кольорів: червоним, зеленим чи синім таким чином, щоб жодні два сусідні трикутники не мали однакового кольору. Таке забарвлення вважається допустимим. Тут два трикутники вважаються сусідніми, якщо вони мають спільне ребро. Зверніть увагу: якщо вони мають лише спільну вершину, вони не сусідні.
Наприклад, ось допустиме забарвлення наведеної вище сітки:
<img class="img-responsive center-block" alt="забарвлена сітка, що складається з 64 трикутників" src="https://cdn.freecodecamp.org/curriculum/project-euler/tri-colouring-a-triangular-grid-2.gif" style="background-color: white; padding: 10px;" />
Забарвлення C', отримане за допомогою повороту або відбиття забарвлення C, вважається відмінним від C, якщо вони не ідентичні.
Скільки різних допустимих забарвлень існує для наведених вище налаштувань?
# --hints--
`triangularGridColoring()` має повертати до `10834893628237824`.
```js
assert.strictEqual(triangularGridColoring(), 10834893628237824);
```
# --seed--
## --seed-contents--
```js
function triangularGridColoring() {
return true;
}
triangularGridColoring();
```
# --solutions--
```js
// solution required
```

View File

@ -0,0 +1,76 @@
---
id: 5900f37f1000cf542c50fe92
title: 'Завдання 19: Підраховуємо неділі'
challengeType: 5
forumTopicId: 301827
dashedName: problem-19-counting-sundays
---
# --description--
Нижче наведена наступна інформація, але Ви можете зробити певні дослідження самостійно.
<ul>
<li>1 січня 1900 року був понеділком.</li>
<li>По 30 днів налічують вересень,<br>квітень, червень та листопад.<br>Усі інші - по 31 дню,<br>не враховуючи лютий,<br>який зазвичай має 28 днів.<br>А у високосні роки - 29 днів.</li>
<li>Високосний рік випадає на рік, який рівно ділиться на 4, але це не стосується сторіччя, хіба що воно кратне 400.</li>
</ul>
Скільки неділь випало на перше число місяця протягом двадцятого сторіччя (від 1 січня 1901 по 31 грудня 2000)?
# --hints--
`countingSundays(1943, 1946)` має повернути число.
```js
assert(typeof countingSundays(1943, 1946) === 'number');
```
`countingSundays(1943, 1946)` має повернути число 6.
```js
assert.strictEqual(countingSundays(1943, 1946), 6);
```
`countingSundays(1995, 2000)` має повернути число 10.
```js
assert.strictEqual(countingSundays(1995, 2000), 10);
```
`countingSundays(1901, 2000)` має повернути число 171.
```js
assert.strictEqual(countingSundays(1901, 2000), 171);
```
# --seed--
## --seed-contents--
```js
function countingSundays(firstYear, lastYear) {
return true;
}
countingSundays(1943, 1946);
```
# --solutions--
```js
function countingSundays(firstYear, lastYear) {
let sundays = 0;
for (let year = firstYear; year <= lastYear; year++) {
for (let month = 0; month <= 11; month++) {
const thisDate = new Date(year, month, 1);
if (thisDate.getDay() === 0) {
sundays++;
}
}
}
return sundays;
}
```

Some files were not shown because too many files have changed in this diff Show More