project euler 28

来源:互联网 发布:mac如何打开msg文件 编辑:程序博客网 时间:2024/06/11 06:51

Problem 28


Number spiral diagonals

Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows:s

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开始,按顺时针顺序向右铺开的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螺旋数阵对角线上的数之和是多少?

package projecteuler;import org.junit.Test;public class Prj28 {/** * 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 2520  7  8  9 1019  6  1  2 1118  5  4  3 1217 16 15 14 13It 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? */@Testpublic void test(){System.out.println(Calculator.calculate());}public static class Calculator{public static int calculate(){int lastEnd = 1;int sum = 1;for( int i = 3; i <= 1001; i = i + 2 ){int [] fourAngle = getFourAngle( lastEnd + i - 1, i - 1 );sum += fourAngle[0];sum += fourAngle[1];sum += fourAngle[2];sum += fourAngle[3];System.out.print(fourAngle[0] + "," + fourAngle[1] + "," + fourAngle[2] + "," + fourAngle[3]);System.out.println();lastEnd = fourAngle[3];}return sum;}private static int[] getFourAngle(int startPt, int interval) {return new int[]{ startPt , startPt + interval, startPt + 2 * interval , startPt + 3 * interval};}}}


0 0
原创粉丝点击