Number spiral diagonals
2016-04-02 17:42
471 查看
https://projecteuler.net/problem=28
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))
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))
相关文章推荐
- 关于突破google65k方法的限制,让你的应用不在爆棚
- Go语言学习(十)bytes包处理字节切片
- ZOJ 2851 Code Formatter
- ZOJ 2849 Attack of Panda Virus
- 【NOIP模拟】愉快的logo设计
- Association Rules and the apriori algorithm
- 读 《我为什么放弃Go语言》 有感
- Django 基础(二),Model连表、Form自定义错误信息、Ajax操作
- Django 基础(二),Model连表、Form自定义错误信息、Ajax操作
- Resize Logo
- Visual Studio Code中配置GO开发环境
- django-总结
- Win10一周年更新操作中心细节曝光:缩略图上头条/logo成为排序标识
- Django--BBS项目
- 一步一步利用django创建博客应用(一)
- django基础
- Go语言版HelloWorld
- Pollard's Rho Algorithm——求正整数的质因数
- LeetCode Algorithms #66 <Pascal's Triangle>
- Django视图和网址