0
点赞
收藏
分享

微信扫一扫

c语言-蓝桥杯-蛇形填数

你的益达233 2022-02-14 阅读 101

题目描述
如下图所示,小明用从 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;
}
举报

相关推荐

0 条评论