每日一题(2020年C/C++ B组第二场省赛第三题填空题)

本文解析了一道名为“蛇形填数”的蓝桥杯竞赛题目,介绍了如何利用数学方法快速定位无限大矩阵中特定位置的数值,并给出了详细的计算步骤。
​这里是蓝桥杯历年的题目,欢迎关注公众号“放码过来呀”

题目名称:蛇形填数

题目描述:

如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?

图片

 

题目答案:761

题目分析:

将图形顺时针旋转45度,我们可以发现20行20列应该位于第39层的中间一个(也就是38层的最后一个数+39层的中间之前个数)

图片

 

题目代码:

(1+38)*38/2 :这个算的是第48行最后一个数的大小,通过观察每行的个数是一个单调递增的数列(比如第一行1个数、第二行2个数、第三行3个数、第四行4个数、第N行n个数......)而位数与数字大小是一个值(比如:第一个数是1,第二个数是2,第三个数是3,第N个数是n......)

所以这个表达式是48行最后一位数的大小

(39+1)/2:这个算的是49行从第一位到中间一位的位数

答案:(1+38)*38/2+(39+1)/2 =761

思路整理:

这道题考察的是数学思维,当然编程也能做,要考虑顺序,每行个数。用计算的方式用考虑顺序,直接求出上一层的的最后一位,加上本层的位数(只针对这题,别的题还要单独考虑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值