【笔试常见编程题06】最近公共祖先、求最大连续bit数、二进制插入、查找组成一个偶数最接近的两个素数

在这里插入图片描述

1. 最近公共祖先

将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。
测试样例:
2,3
返回:1
示例 1
输入
输出

思路1:
节点除2就是parent
大的先除直到两个数相等

class LCA {
public:int getLCA(int a, int b) {while (a != b) { if (a > b) a /= 2;else b /= 2;}return a;}
};

2. 求最大连续bit数

求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
数据范围:数据组数:1 ≤ t ≤ 5, 1 ≤ n ≤ 500000
进阶:时间复杂度:O(logn)空间复杂度:O(1)
输入描述
输入一个int类型数字
输出描述
输出转成二进制之后连续1的个数
示例 1
输入
200
输出
2
说明
200的二进制表示是11001000,最多有2个连续的1

思路1:
从右往左找连续的1
更新计数器,直到找到最长的连续的1

int main() {int a = 0, count = 0;while (cin >> a) {int temp = 0;for (int i = 0; i < 32; i++) {if (1 << i & a)temp++;if ((1 << i & a) == 0 || i == 31) { //如果a=-1,二进制全是1,需要加一个条件i == 31就进来count = max(temp, count);  temp = 0;}     }cout << count << endl;}return 0;
}

思路2:
求二进制数有几个1,n & n-1
求二进制数最长连续的1,n & (n << 1)

int main() 
{int n;while (cin >> n) {int count = 0;while (n) {n = n & (n << 1);count++;}cout << count << endl;}return 0;
}

3. 二进制插入

给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
测试样例:
1024,19,2,6
返回:1100
示例 1
输入
输出

思路1:
在这里插入图片描述

class BinInsert {
public:int binInsert(int n, int m, int j, int i) {m <<= j;return n + m;}
};
class BinInsert {
public:int binInsert(int n, int m, int j, int i) {while(j) {m *= 2;j--;}return n + m;}
};

4. 查找组成一个偶数最接近的两个素数

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
数据范围:输入的数据满足
输入描述
输入一个大于2的偶数
输出描述
从小到大输出两个素数
示例 1
输入
20
输出
7
13
示例 2
输入
4
输出
2
2

思路1:
中间组成偶数的两个素数差值最小
从中间往两边找差值最小素数

#include <iostream>
using namespace std;// 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数
bool isPrime(int n) { // 经常用到的功能封装成函数会更方便for (int i = 2; i <= n / 2; i++) {if (n % i == 0)return false;}return true; // 遍历完都没有就是素数
}int main() { int n;while (cin >> n) {for (int i = n/2; i > 0; i--) if (isPrime(i) && isPrime(n - i)) {cout << i << '\n' << n - i << endl;break;}}return 0;
}

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

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

相关文章

Airtest成功案例分享:KLab连续2年携Airtest私有云产品参加CEDEC大会!

一、KLab株式会社介绍 KLab株式会社是一家位于日本的移动游戏开发公司&#xff0c;成立于2000年。公司以开发和运营基于动漫和漫画IP的手机游戏而闻名&#xff0c;尤其是在音乐节奏游戏领域。KLab的一些知名作品包括《LoveLive!学园偶像祭》、《排球少年&#xff1a;新的征程》…

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组② | 11.3 - 11.5

前言 第 11 章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于10大管理的内容&#xff0c;学习要以教材为准。本章上午题分值预计在15分。 目录 11.3 收集需求 11.3.1 主要输入 11.3.2 主要工具与技术 11.3.3 主要输出 11.4 定义范围 11.4.1 主要输入…

【经典面试题】环形链表

1.环形链表oj 2. oj解法 利用快慢指针&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {ListNode* slow head, *fast…

如何在 C 语言中进行选择排序?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

【Python】已解决:AttributeError: target_names(机器学习中查看数据信息报错)

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;AttributeError: target_names&#xff08;机器学习中查看数据信息报错&#xff09; 一、分析问题背景 在机器学习的数据处理阶段&#xff0c;我们经常需要查看…

使用pip或conda离线下载安装包,使用pip或conda安装离线安装包

使用pip或conda离线下载安装包&#xff0c;使用pip或conda安装离线安装包 一、使用pip离线下载安装包1. 在有网络的机器上下载包和依赖2. 传输离线安装包 二、在目标机器上离线安装pip包三、使用conda离线下载安装包1. 在有网络的机器上下载conda包2. 传输conda包或环境包3. 在…

每日一练 - 理解IGMP组播组信息

下面是路由器 RTB 的部分输出信息&#xff0c; 关于输出信息描述错误的是A.接口上动态加入的组播组个数是 1 B.加入的组播组地址是 225.1.1.2 C.dsplay igmp group 命令用来查看 IGMP 组播组信息,包括通过成员报告动态加入的组播组和通过命令行静态加入的组播组信息 D.最后发…

汇编语言 第四版 王爽 一二章总结

第一章 基础知识 汇编语言的三类指令 1. 汇编指令 汇编指令是直接被CPU执行的指令&#xff0c;它们在汇编时被转换为对应的机器码。主要包括&#xff1a; 数据传送指令&#xff1a;如MOV&#xff0c;用于在寄存器、内存和I/O端口之间传送数据。 MOV AX, BX ; 将BX中的数据传…

【手把手教你使用cgroup配置,十分钟就会】

手把手教你使用cgroup配置&#xff0c;十分钟就会 什么是cgroupcgroup中的参数概念及原理 以 memory为例看下如何配置配置内存限制写一个内存申请脚本执行脚本测试结束语 什么是cgroup cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制&#xff0c…

postgres 的dblink使用,远程连接数据库

一.安装下载 dblink create extension if not exists dblink 查看是否已经安装 select * from pg_extension;二.运行&#xff0c;查询数据 其中&#xff0c;第一个参数是dblink名字&#xff0c;也可以是连接字符串。 第二个参数是要执行的SQL查询语句。AS子句用于指定返回结…

“学习Pandas中时间序列的基本操作“

目录 # 开篇 1. 创建和操作时间序列对象 2. 时间序列数据的读取和存储 3. 时间序列数据的索引和切片 4. 时间序列数据的操作和转换 5. 时间序列数据的可视化 6. 处理时间序列中的缺失值 7. 时间序列数据的聚合和分组 8. 时间序列的时间区间和偏移量操作 示例代码&…

算法训练营day28--134. 加油站 +135. 分发糖果+860.柠檬水找零+406.根据身高重建队列

一、 134. 加油站 题目链接&#xff1a;https://leetcode.cn/problems/gas-station/ 文章讲解&#xff1a;https://programmercarl.com/0134.%E5%8A%A0%E6%B2%B9%E7%AB%99.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1jA411r7WX 1.1 初见思路 得模拟分析出…

如何抓取和处理天气网站数据

目的 在进行气象研究时&#xff0c;获取准确的历史天气数据是至关重要的。本文将分享如何从天气网站收集数据并将其转化为表格形式&#xff0c;以便于后续分析。然而&#xff0c;在直接抓取数据时&#xff0c;可能会遇到API接口保护的问题。本文将详细解释解决这些问题的步骤&…

“Pandas数据处理与分析:实用技巧与应用“

目录 # 开篇 1. pandas的series的了解 1.1 pd.Series 创建 1.2 pd.series 的索引使用 1.3 pd.series 之字典/索引 1.4 pandas 转换数据类型 1.5 pandas 通过索引或者通过位置来取值 1.6 pandas 指定行取值 1.7 pands之Series 切片和索引 1.8 pands之Series 的索引和值…

Python基础教学之三:函数与模块篇——实现代码重用和模块化

Python基础教学之三&#xff1a;函数与模块篇——实现代码重用和模块化 一、函数的定义与使用 1. 理解函数 函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码块。它可以提高代码的重用性和程序的清晰度。 你可以定义一个由自己想要功能的函数&#xff0c;以下是…

交易伦敦银系统,听说高手都有一套

成功的伦敦银交易者都有一套自己的交易系统&#xff0c;这个系统为他们提供了一个明确的、可重复的决策框架&#xff0c;无论白银市场如何波动&#xff0c;他们都能按照既定的规则和策略进行操作&#xff0c;避免了情绪化决策和随意交易——这样的一致性有助于减少错误和亏损&a…

Androd 12 (MTK)修改屏幕物理分辨率Physical Size

1.需求说明 Android目前显示分辨率为480*800&#xff0c;立项表中像素为720*1280。请修改屏幕分辨率到指定大小。 2.思路分析 如果从手机修改对应的分辨率&#xff0c;必须自上而下的进行修改分为两个层面进行修改。 1.驱动底层 2.软件上层 3.结局方法与相关说明 查看当…

安全防御---防火墙实验1

安全防御—防火墙实验1 一、实验拓扑与要求 要求&#xff1a; 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9&#xff1a;00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 …

企业注册商标步骤

企业注册商标&#xff1a;详细步骤与关键要点 在当今商业环境中&#xff0c;商标已成为企业品牌建设和市场竞争中不可或缺的一部分。它不仅是企业身份的象征&#xff0c;也是企业知识产权的重要组成部分。 一、确定注册商标的商品项目 首先&#xff0c;企业需要明确需要注册商…

【游戏引擎之路】登神长阶(七)——x86汇编学习:凡做难事,必有所得

5月20日-6月4日&#xff1a;攻克2D物理引擎。 6月4日-6月13日&#xff1a;攻克《3D数学基础》。 6月13日-6月20日&#xff1a;攻克《3D图形教程》。 6月21日-6月22日&#xff1a;攻克《Raycasting游戏教程》。 6月23日-7月1日&#xff1a;攻克《Windows游戏编程大师技巧》。 7月…