https://projecteuler.net/problem=28
Number spiral diagonals
Problem 28
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?
只看右半部分,1为坐标轴圆点(x=0),第i列的右下角数字是:(2i-1)^2+2i
这样结果就出来了:
<pre name="code" class="python">def spiralDiagonals(n):
if n <= 1:
return 1
result = 1
step = 2
#从x=1到x=(n-1)/2
for i in range(1,int((n-1)/2)+1):
result += 4 * ((2*i-1)**2+2*i)+6*step
step += 2
return result
print(spiralDiagonals(1001))