蓝桥杯 每日2题 day4

碎碎念:好难好难,,发呆两小时什么也写不出来,,,周六大寄了

10.阶乘约数 - 蓝桥云课 (lanqiao.cn)

暴力跑了两个小时没出来结果,,去看题解要用数学:约数定理,,闻所未闻

 

11.子树的大小 - 蓝桥云课 (lanqiao.cn)

这个题,想着写三段循环看能不能,写了三行就卡壳,,,可恶啊,,

题解完全是按树的构建去的,我看不懂,,,,问chatgpt他写的也不行

姑且贴一下题解,,,其他的不管了,,,晚上回去看看别人写的模板吧,,水一天

import os
import sys

t = int(input())

for _ in range(t):
    # 第k个结点的子节点范围为[k*m-m+2,k*m+1]
    n,m,k = map(int,input().split())
    l=k   # 表示子节点的左端点 
    r=k   # 表示子节点的右端点
    ans = 1   # 记录总的结点的数量
    res = 1   # 记录每一层子结点的数量
    while r*m+1 <=n:  # 如果子节点最右端小于n  说明没到尽头
        res *= m      # 计算出这一层的所有子节点数目
        l = l*m-m+2   # 更新左端点
        r = r*m+1     # 更新右端点
        ans +=res     # 更新总端点数目
    l=l*m-m+2 # 最后一层最左端点
    ans+=max(0,n-l+1)  # 最后一层最右端点就是n,直接用n-l+1计算出这层的结点数量
    print(ans)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值