【LeeCode】赛题02:Python解答大衍数列题目

题目:大衍数列

中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。

它的前几项是:0、2、4、8、12、18、24、32、40、50 …

查看规律

我粗略的看一下发现这个序列规律不是很强,我们给它标上序号。
序号:1、2、3、4、 5、 6、 7、 8、 9、 10
数列:0、2、4、8、12、18、24、32、40、50

我们发现粗略计算一下,序号的平方的一半很接近数列对应项的数值。
序号:1 2 3 4 5 6 7 8 9 10
计算:0.5 2 4.5 8 12.5 18 24.5 32 40.5 50

我们对比一下计算后的结果与大衍数列发现,在序号为:1、3、5、7、9的位置的数值按照序号的平方的一半计算方式要比对应大衍数量位置的值多0.5。而在2、4、6、8、10的位置完全相同。

由此我们推断为奇偶数列:
当序列号i为奇数时,数值为( i * i - 1)/2
当序列号i为偶数时,数值为( i * i ) /2

Python代码实现:

# 生成num个大衍数列值的列表
def DaYan(num):
    list = []
    for i in range(1,num + 1):
        if num % 2 == 1:
            list.append((i * i -1)/ 2)
        else:
            list.append((i * i)/ 2)
    return list

if __name__ == '__main__':
    res = DaYan(5)
    print(res)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值