数字螺旋对角线
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开始并沿顺时针方向向右移动,形成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螺旋中对角线上的数字总和是多少?
思路
1.第n圈的矩阵边长m = 2 * n - 1;
2.第n圈矩阵的右上角值为m * m;
3.左上角 m * m - m + 1;
左下角 m * m - 2 * m + 2;
右下角 m * m - 3 * m + 3;
4.第n圈四个角值的和为 4 * m * m - 6 * m + 6;
#include <stdio.h>
int main(){
int m = 3;
int sum = 1;
while(m <= 1001){
sum += 4 * m * m - 6 * m + 6;
m += 2;
}
printf("%d\n",sum);
return 0;
}