Advertisement

【蓝桥杯真题】2020年蓝桥杯:蛇形填数

阅读量:

本文最初发布于微信公众号'算法与编程之美',欢迎关注我们的内容,随时获取更多内容。

问题描述

请看下图,小明使用从1开始的正整数,以“蛇形”方式填充了一个无限大的矩阵。第一行:1, 2, 6, 7, 15,…;第二行:3, 5, 8, 14,…;第三行:4, 9, 13,…;第四行:10, 12,…;第五行:11,…;依此类推。观察发现,矩阵中第二行第二列的数是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)

还没有任何评论哟~