#蓝桥杯 #Python #杨辉三角 #求助 试题 历届真题 杨辉三角形【第十二届】【省赛】

探讨如何用Python编写效率更高的代码,解决杨辉三角中特定数的查找问题,以达到竞赛中的满分标准
摘要由CSDN通过智能技术生成

思路:

暴力求解(40分)

杨辉三角的第n行的各个数为二项式\left ( a+b \right )^{n-1}的二项式系数\binom{n-1}{i}

最大项为中间的那两项or一项。

如果要查找的数比这一行的最大项还要大,则直接加上这一行数的个数,否则用列表存储这一行数,并且查看这个数在这一行的位置,并与前面做记录的个数和相加,得到最后的结果。

代码如下:

import math
n=int(input())
p=0
num=0
while True:
    flag=math.comb(p, sum(divmod(p, 2)))
    if n > flag:
        num += p + 1
    else:
        ans=[]
        for j in range(p+1):
            ans.append(math.comb(p,j))
        # print(*ans)
        if n in ans:
            num+= ans.index(n) + 1
            break
        else:
            num+=len(ans)
    p+=1
    # print("\r运行中"+'.'*(p%10),end='')
print(num)

能运行,但是得不到满分,因为运行时间超过标准。求助有无能用Python写出符合题意得满分代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值