分享

Python|2020年蓝桥杯:蛇形填数

 算法与编程之美 2021-03-09

问题描述

如下图所示,小明用从 1 开始的正整数蛇形填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …

(1)
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少?

解决方案

通过观察排列规律可以发现要寻找的数可以通过所在的行数,列数,斜排(右上—左下)以及该斜排最大的数之间存在的关系来求得。具体解决方法如下:通过行数,列数求出该数在第几斜排,再求出该斜排最大的数,然后判断斜排奇偶性,若为奇,则答案为最大的数减去行数加一;若为偶,则答案为最大的数减去列数加一。

a = int(input())#第几行

b = int(input())#第几列

c = a+b-1#第几斜排

n = 0

for i in range(1, c+1):

     n += i#c斜排的最后一个数

if c % 2 != 0:#奇偶性

     ans = n - a + 1#等于最大的数减行数加1

else:

     ans = n - b + 1#等于最大的数减列数加1

print(ans)

结语

解决了一道蓝桥杯一道填空题,培养做题与学习思维,对于知识的应用不够熟练,还需要更多的转换思维方式解题;之后巩固基础知识,培养更活跃的思维方式。

主编:欧洋

稿件来源:深度学习与文旅应用实验室(DLETA)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多