2.2 KiB
2.2 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f3881000cf542c50fe9b | Проблема 28: Діагоналі числової спіралі | 5 | 301930 | problem-28-number-spiral-diagonals |
--description--
Якщо почати з числа 1 і рухатися праворуч за годинниковою стрілкою, утворюється ось така спіраль розміром 5х5:
21
22 23 24 25
20
7
8 9
1019 6
1
2 1118
5
43
1217
16 15 14 13
Можна переконатися, що сума чисел по діагоналях - 101.
Чому дорівнює сума чисел по діагоналях у спіралі n
до n
, створеній таким самим чином?
--hints--
spiralDiagonals(101)
має повернути число.
assert(typeof spiralDiagonals(101) === 'number');
spiralDiagonals(101)
має повернути число 692101.
assert(spiralDiagonals(101) == 692101);
spiralDiagonals(303)
має повернути число 18591725.
assert(spiralDiagonals(303) == 18591725);
spiralDiagonals(505)
має повернути число 85986601.
assert(spiralDiagonals(505) == 85986601);
spiralDiagonals(1001)
має повернути число 669171001.
assert(spiralDiagonals(1001) == 669171001);
--seed--
--seed-contents--
function spiralDiagonals(n) {
return n;
}
spiralDiagonals(1001);
--solutions--
const spiralDiagonals = (n) => {
const Sn2 = (n) => {
return n*(n+1)*(2*n+1)/6;
};
const Sn = (n) => {
return n*(n+1)/2;
};
let sum = (Sn2(n-1) + Sn(n-1) + n-1) + (Math.floor(n/2) + Sn2(n));
return sum;
};