Files
2022-02-19 16:26:08 +09:00

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
10
19  6  
1
 2 11
18  
5
 4  
3
12
17
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;
};