[保研/考研机试] KY85 二叉树 北京大学复试上机题 C++实现

news2024/11/25 22:42:27

题目链接:

二叉树icon-default.png?t=N6B9https://www.nowcoder.com/share/jump/437195121692000296981

描述

如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。     比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。

输入描述:

    输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。

输出描述:

    对于每一组测试数据,输出一行,该行包含一个整数,给出结点m所在子树中包括的结点的数目。

示例1

输入:

3 12
0 0

输出:

4

思路:

  1. 定义递归函数 cal,其中参数 m 表示当前结点,参数 n 表示最后一个结点。
  2. 如果 m 大于 n,表示当前结点超过最后一个结点,返回 0。
  3. 否则,递归计算左子树和右子树中包括的结点数,再加上当前结点 m 本身。
  4. main 函数中,循环读入输入的 mn,调用递归函数 cal 计算结果,并输出。如果输入为 0 时结束循环。

源代码:

#include <iostream>
using namespace std;

// 定义递归函数,计算结点 m 所在子树中包括的结点数目
int cal(int m, int n) {
    if (m > n) {
        return 0; // 结点 m 超过最后一个结点 n,返回 0
    }
    else {
        // 递归计算左子树和右子树中包括的结点数,再加上 m 本身
        return cal(2 * m, n) + cal(2 * m + 1, n) + 1;
    }
}

int main() {
    int m, n;
    while (cin >> m >> n) {
        int res = 0; // 存储结果
        if (m == 0 && n == 0) {
            break; // 输入为 0 时结束循环
        }
        res = cal(m, n); // 调用递归函数计算结果
        cout << res << endl; // 输出结果
    } 

    return 0;
}

提交结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode每日一题】——41.缺失的第一个正数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 困难 三【题目编号】 41.缺失的第一个正数 四【题目描述】 给你一个…

新能源电动车充电桩控制主板安全特点

新能源电动车充电桩控制主板安全特点 你是否曾经担心过充电桩的安全问题?充电桩主板又是什么样的呢?今天我们就来聊聊这个话题。 充电桩主板采用双重安全防护系统&#xff0c;包括防水、防护、防尘等&#xff0c;确保充电桩安全、可靠。不仅如此&#xff0c;充电桩主板采用先…

公文与校对:无缝链接的艺术与重要性

在公文写作的世界中&#xff0c;清晰、准确且专业的语言是成功沟通的关键。然而&#xff0c;许多人可能忽视了公文写作过程中一个至关重要的环节——校对。无论是初步的草稿还是最终的成品&#xff0c;校对都是确保公文达到预期目标的重要工具。在这个环节中&#xff0c;爱校对…

每天一道leetcode:剑指 Offer 13. 机器人的运动范围(中等广度优先遍历剪枝)

今日份题目&#xff1a; 地上有一个m行n列的方格&#xff0c;从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0]的格子开始移动&#xff0c;它每次可以向左、右、上、下移动一格&#xff08;不能移动到方格外&#xff09;&#xff0c;也不能进入行坐标和列坐标的数位之…

Android之ADB常用命令

15、查看ipv6 是否使能 sysctl -a | grep ipv6 | grep disable 13、以太网获取Ip、网关、子网掩码、域名等 adb shell 网卡信息&#xff1a;ifconfig eth0 dns1&#xff1a;getprop net.dns1 dns2&#xff1a;getprop net.dns2 12、屏幕分辨率&#xff1a;wm size 11、…

此文详解,数据仓库管理建设的经验

目前由于数据分散在不同的存储环境或数据库中&#xff0c;对于新业务需求的开发需要人工先从不同的数据库中同步、集中、合并等处理&#xff0c;造成资源和人力的浪费。同时&#xff0c;目前的系统架构&#xff0c;无法为未来数据驱动业务创新的理念提供友好的支撑。需要建设新…

600 V单管IGBT,可在电源应用中实现出色效率

基础半导体器件领域的高产能生产专家Nexperia (安世半导体)今日宣布&#xff0c;将凭借600 V器件系列进军绝缘栅双极晶体管(IGBT)市场&#xff0c;而30A NGW30T60M3DF将打响进军市场的第一炮。Nexperia在其庞大的产品组合中增加了IGBT&#xff0c;满足了市场对于高效高压开关器…

android app控制ros机器人五(百度地图)

半吊子改安卓&#xff0c;新增了标签页&#xff0c;此标签页需要显示百度地图 按照官方教程注册信息&#xff0c;得到访问应用AK&#xff0c;步骤也可以参照下面csdn Android地图SDK | 百度地图API SDK 【Android】实现百度地图显示_宾有为的博客-CSDN博客 本人使用的是aar开…

[保研/考研机试] KY96 Fibonacci 上海交通大学复试上机题 C++实现

题目链接&#xff1a; KY96 Fibonacci https://www.nowcoder.com/share/jump/437195121692000803047 描述 The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} are defined by the recurrence: F00 F11 FnFn-1Fn-2,n>2 Write a program to calculate the Fibon…

Shein和Temu激烈竞争,卖家又如何突破并脱颖而出?

电商巨头SHEIN执行副主席向投资者发布了一封信函称实现了公司有史以来最高的上半年净利润。特别是持续增长势头巩固了在美国市场上的领先地位。Shein以低廉的价格和丰富的选择这种“按需”商业模式&#xff0c;迅速在美国崭露头角。根据Apptopia的数据&#xff0c;Shein在美国的…

文本挖掘 day5:文本挖掘与贝叶斯网络方法识别化学品安全风险因素

文本挖掘与贝叶斯网络方法识别化学品安全风险因素 1. Introduction现实意义理论意义提出方法&#xff0c;目标 2. 材料与方法2.1 数据集2.2 数据预处理2.3 关键字提取2.3.1 TF-IDF2.3.2 改进的BM25——BM25WBM25BM25W 2.3.3 关键词的产生(相关系数) 2.4 关联规则分析2.5 贝叶斯…

不可忽视的力量:揭示文字校对的重要性

在生活的方方面面&#xff0c;语言一直是我们交流思想、情感、信息的关键工具。文字&#xff0c;作为语言的重要载体&#xff0c;也在日常生活中扮演着至关重要的角色。不论是个人日常的社交媒体更新&#xff0c;还是公司的官方公告&#xff0c;文字都是信息传播的基础。然而&a…

MongoDB常用命令

什么是MongoDB ? MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个…

ansible剧本之role角色模块

role角色 一&#xff1a;Roles 模块1.roles 的目录结构&#xff1a;2.roles 内各目录含义解释3.在一个 playbook 中使用 roles 的步骤&#xff1a;&#xff08;1&#xff09;创建以 roles 命名的目录&#xff08;2&#xff09;创建全局变量目录&#xff08;可选&#xff09;&am…

【Vue教程】第一章 基础语法

Vue是什么&#xff1f; 创建Vue实例 创建一个Vue实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

[PyTorch][chapter 49][创建自己的数据集 1]

前言&#xff1a; 后面几章主要利用DataSet 创建自己的数据集&#xff0c;实现建模&#xff0c; 训练&#xff0c;迁移等功能。 目录: pokemon 数据集深度学习工程步骤 一 pokemon 数据集介绍 1.1 pokemon: 数据集地址&#xff1a; 百度网盘路径: https://pan.baidu.com/s/1…

vant金额输入框

1.在components中新建文件夹currency&#xff0c;新建index.js import Currency from ./src/currency.vueCurrency.install function (Vue) {Vue.component(Currency.name, Currency) }export default Currency 2.在currency中新建文件夹src&#xff0c;在src中间currency.v…

Pyinstaller打包exe(包括其他资源数据)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、说明二、打包步骤三、其他 前言 记录&#xff1a;简单记录使用Pyinstaller将py和资源文件打包为exe的过程 一、说明 环境&#xff1a;anconda版本python …

SAP 选择屏幕组件名描述翻译时字符长度不够问题处理

问题&#xff1a;有时候我们在开发report程序的时候&#xff0c;要求程序显示支持中英文&#xff0c;如果程序是在中文环境下开发的时候&#xff0c;需要进行翻译处理&#xff0c;但是我们发现选择屏幕上的组件的描述支持的默认长度是30位&#xff0c;如果超过该如何处理呢 解…