题目描述
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列
的数是多少?
1.解法一
观察观察位置为(1,1),(2,2),(3,3)(4,4)~~的数字,
可以发现分别为1,5,13, 25~~,寻找这几个数的规律为前一个数加上4*该数的下标,如:5=1+4*1;13=5+4*2;25=13+4*3~~,由此可以设计函数解出
2.方法二
将该矩阵顺时针旋转45°,然后寻找规律。可以发现第二十行二十列为旋转后第三十九行中间的那个,然后观察可以发现奇数行为顺序,偶数行为逆序,然后第几行就有几个数,由此可以查出第三十九行都最后一个数,再减去(39-1)的一半,即为三十九行中间的那个数
3.答案为761
4.附代码如下
1.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int a = 1;
for (i = 1; i <= 19; i++)
{
a = a + i * 4;
}
printf("%d\n", a);
return 0;
}
2.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int a = 0;
int b = 0;
a = 20 * 2 - 1;
for (i = 1; i <= a; i++)
{
b += i;
}
b = b - (a - 1) / 2;
printf("%d\n", b);
return 0;
}