python 蛇形填数【蓝桥杯】

如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。

1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...

容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数是多少?
两种思路:
第一种比较简单(但是我没想到)

'''
对角线上的元素为1,5,13,21
为前一个元素+行号的4倍
'''
res=1
for i in range(1,20):
  res += 4*i
  #print(res)
#print('===================')
print(res)

建议先做题前先把行号表上,第一种比较好想
第二中比较抽象(我想到的,但是花的时间比较长了)

import os
import sys

# # 请在此输入您的代码
# 找规律
# 1 2 6 7 15 16 28 29
# 3 5 8 14 17 27 30
# 4 9 13 18 26 31
# 10 12 19 25 32
# 11 20 24 33
# 21 23 34
# 22 35
# 36


# 第一列的规律
# 1 3 4 10 11 21 22 36 37 55
#  2 1 6  1  10 1  14 1  18
#找第一列的代码
if __name__ == '__main__':
    l=[1,3]
    b = [2]
    j=0
    for i in range(2,40):
        if i%2==0:#奇数
            j+=1
            l.append(l[i-1]+1)
            b.append(b[j-1]+4)
        if i%2!=0:
            l.append(l[i-1]+b[j])
    # print(l)
    # print(len(l))
    #从0 开始第39(20+20-1)个 ,然后再+20-1
    print(l[38]+19)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值