当前位置: 首页 > article >正文

蓝桥杯3526 子树的大小 | 数学规律

题目传送门

-


这个题目是一个数学题,比较好的方法是从上往下寻找子树的最左和最右的结点,每层统计子结点数,到树的底部时打印结果。
如何求最左、最右的子结点呢?
对于第i个结点,其前面有i-1个结点,每个结点各有m个孩子,再加上1号结点(树根)和子结点自己,得到最左子结点下标为(i-1)*m+2。比如上图中的结点3,其前面有结点1、2,结点1的子结点为2、3、4,结点2的子结点为5、6、7,所以结点3的最左子结点下标为(3-1)*3+1+1 = 8。同理可得,最右子结点的下标为(i-1)*m+m+1


import math
t = int(input())
for _ in range(t):
    n, m, k = map(int, input().split())
    lc, rc = k, k  # 最左、右孩子
    cnt = 1
    while 1:
        lc = (lc-1)*m + 2
        rc = (rc-1)*m + m + 1
        if lc > n:
            print(cnt)
            break
        elif rc > n:
            cnt = cnt + n - lc + 1
            print(cnt)
            break
        else:
            cnt = cnt + rc -lc + 1

END✨



http://www.kler.cn/a/510341.html

相关文章:

  • ESP8266-01S、手机、STM32连接
  • ChatGPT 写作系列
  • 物联网网关Web服务器--Boa服务器移植与测试
  • 《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 深入理解 D3.js 力导向图:原理、调参与应用
  • Linux中安装mysql8,很详细
  • 数据仓库经典面试题
  • oracle使用case when报错ORA-12704字符集不匹配原因分析及解决方法
  • 三电平空间矢量详解
  • Vue3 整合 ArcGIS 技术指南
  • 计算机网络 (49)网络安全问题概述
  • ELF2开发板(飞凌嵌入式)基本使用的搭建
  • 统信V20 1070e X86系统编译安装mysql-5.7.44版本以及主从构建
  • QT中多线程的使用(一)
  • 三、SysTick系统节拍定时器
  • Ruby语言的循环实现
  • 安全算法 - 摘要算法
  • 一种基于部分欺骗音频检测的基于临时深度伪造位置方法的高效嵌入
  • Python语言的计算机基础
  • 【Android】蓝牙电话HFP连接源码分析
  • Debian没有reboot命令记录
  • 【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
  • 【深入解析】 RNN 算法:原理、应用与实现
  • MPSOC 裸机测试USB3.0接口
  • boss直聘 验证码 手图 分析
  • git系列之revert回滚