从数字1开始向右顺时针方向移动,可以得到如下的5×5的螺旋:
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
可以算出对角线上数字之和是101.
1001×1001的螺旋中对角线上数字之和是多少?
原题:
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开始,右斜上方这条线依次为1^2,3^2,5^2,也就是说我们可以很容易确定每一圈的右上角这个数n,然后根据这个数求下一圈四个数,规律可表示为n=n+2*i(其中i是指当圈属于第几圈),这样说比较抽象,举个例子来说吧,比如我已知右上角数为9,而9属于第二个圈,所以下一圈最小的数同时也是右下角数为9+2x2,确定了这样的关系后,就很好求解了,每一圈友四个数依次加上便得到答案,代码如下:
public class Launcher {
public static void main(String[] args) {
int n =1;
int a=0;
int sum=0;
for(int i=1;i<1001;i+=2){
n=(int)Math.pow(i,2);
for(int j=0;j<4;j++){
a=(i+1)/2;
n+=2*a;
sum+=n;
}
}
System.out.println(sum+1);
}
}