Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows:
21 22 23 24 25 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13It can be verified that the sum of the numbers on the diagonals is 101.
What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way?
Sum of Number Spiral Diagonals
It is easy to observe that the sum of spiral diagonals are in groups of four: 1, (3, 5, 7, 9), (13, 17, 21, 25) … And the step is incremented by two and we know the last number is the top right corner and its value is N*N if N is the size of the spiral matrix (either row and column).
Thus, we can simulate the process by adding the four numbers and increment the step every four numbers.
1 2 3 4 5 6 7 8 9 10 11 12 | function computeSumOfSpiralDiagonals(n) { const last = n*n; let sum = 1, d = 2, k = 0; for (let i = 3; i <= last; i += d) { sum += i; k ++; if (k % 4 == 0) { d += 2; } } } console.log(computeSumOfSpiralDiagonals(1001)); |
function computeSumOfSpiralDiagonals(n) { const last = n*n; let sum = 1, d = 2, k = 0; for (let i = 3; i <= last; i += d) { sum += i; k ++; if (k % 4 == 0) { d += 2; } } } console.log(computeSumOfSpiralDiagonals(1001));
See also: Construct a Spiral Matrix using Simulation Algorithm
–EOF (The Ultimate Computing & Technology Blog) —
loading...
Last Post: Dynamic Programming Algorithm to Compute the Block Sum in a Matrix
Next Post: How to Construct Binary Search Tree from Preorder Traversal in Python?