2.0 KiB
2.0 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f3881000cf542c50fe9b | Problema 28: le diagonali della spirale di numeri | 5 | 301930 | problem-28-number-spiral-diagonals |
--description--
Iniziando con il numero 1 e muovendo a destra in direzione oraria una spirale 5 per 5 è formata come segue:
21
22 23 24 25
20
7
8 9
1019 6
1
2 1118
5
4 3
1217
16 15 14 13
Può essere verificato che la somma di tutti i numeri sulle diagonali è 101.
Quale è la somma dei numeri sulle diagnonali di una spirale n
per n
formata nello stesso modo?
--hints--
spiralDiagonals(101)
dovrebbe restituire un numero.
assert(typeof spiralDiagonals(101) === 'number');
spiralDiagonals(101)
dovrebbe restituire 692101.
assert(spiralDiagonals(101) == 692101);
spiralDiagonals(303)
dovrebbe restituire 18591725.
assert(spiralDiagonals(303) == 18591725);
spiralDiagonals(505)
dovrebbe restituire 85986601.
assert(spiralDiagonals(505) == 85986601);
spiralDiagonals(1001)
dovrebbe restituire 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;
};