您的位置:首页 > 编程语言 > Go语言

Number spiral diagonals

2016-04-02 17:42 471 查看
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?

简单的考虑了一下每一圈的4个角的数字是等差数列,只要右下角的那一个知道了,这一圈数字的和就知道了。

只看右半部分,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))



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: