2021年第十二届蓝桥杯省赛Python组(真题+解析+代码):杨辉三角形

1 真题


2 解析

难度系数:⭐⭐⭐

考察题型:枚举 查找 数论

涉及知识点: 模拟 二分查找 组合数

思路分析:

这道题有亿点难,考场上我应该大概率做不出来,

不过没关系,暴力破解能骗一半的分数!q(≧▽≦q)

标准算法思路参考:

第十二届蓝桥杯B组C/C++省赛—H题(杨辉三角)_思维题_萌小帝的博客-CSDN博客


3 代码

暴力破解版-10分

#杨辉三角形
n = int(input())
if n == 1:
    print(1)
else:
    a = [0,1,0]
    index = 1
    flag = True
    while flag==True:
        i = 1
        tmp = []
        for i in range(1,len(a)):
            t = a[i]+a[i-1]
            tmp.append(t)
            index += 1
            if n == t:
                print(index)
                flag=False
                break
        tmp.insert(0,0)
        tmp.append(0)
        a = tmp
    

算法版-20分

#杨辉三角形
# 组合值模板
def C(a, b):  
    res = 1
    fz = a #分子
    for fm in range(1,b+1): #1~b
        res = res * fz // fm#递推公式=分子//分母
        fz -= 1
        if res > n:
            return res
    return res
#二分查找
def check(k): #k:斜行
    l, r = 2*k, n   #赋初值left:2k right:n
    while l < r:
        mid = l + r >> 1 # >>1:相当于(l+r)//2
        if C(mid, k) >= n:
            r = mid
        else:
            l = mid + 1
            
    if C(r, k) != n:
        return False
    print(r * (r + 1) // 2 + k + 1)#查找位置
    return True

n = int(input())
if n == 1:
    print(1)
else:
    for k in range(16,0,-1):#从16斜行枚举
        if check(k)==True:
            break

   📍我写的是关于蓝桥杯的系列题解,感谢关注我的朋友们,我会持续输出高质量文章💪🏻   蓝桥杯python组十二届省赛真题+解析+代码(通俗易懂版)_编程有了思路-CSDN博客_蓝桥杯大赛python小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从 1 拼到多少。例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?https://blog.csdn.net/m0_55148406/article/details/122774029

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蓝刷题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值