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 13

It 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?


In [1]:
1001*1001


Out[1]:
1002001

In [2]:
puts 1002001 - 1000


1001001

In [14]:
target = 1002001
result = 0

(1..500).to_a.reverse.each do |n|
  i = n * 2
  result += target
  target -= i
  result += target
  target -= i
  result += target
  target -= i
  result += target
  target -= i
end

result + 1


Out[14]:
669171001