本文为2023年9月GESP C++四级的上机题目的详细题解!觉得写的不错或者有帮助可以点个赞啦。

目录

题目一讲解视频:

题目二讲解视频:

题目一:进制转换

解题思路:

代码(C++):

题目二:变长编码

解题思路:

代码(C++):


题目一讲解视频:

2023年9月GESP C++四级上机题一


题目二讲解视频:

2023年9月GESP C++四级上机题二


题目一:进制转换

B3869 [GESP202309 四级] 进制转换 - 洛谷

解题思路:

我们首先要理解进制的本质。

一个K进制数字,可以理解成逢K进一,也就是每满K的时候往前进一位。

拿最熟悉的十进制数字举例子,个位每满10,十位数字就加一。

所以13可以表示为1 * 10 + 3, 34可以表示成3 * 10 + 4。

十位的数字要满10的时候,就进一位, 百位数字加1,也就是百位数字x就相当于已经有x * 10 * 10了。

那么比如说,十进制的345也就可以表示成3 * 10 * 10 + 4 * 10 + 5。

这个同样应用于任意进制的数字,所以对于一个K进制数字num

求它实际有多大,我们可以用它的第一位乘K的0次,第二位乘K的一次,第三位乘K的二次....最后加上总和,就是这个数字的大小。

这里就可以写一个模拟的思路。

代码(C++):

#include <bits/stdc++.h>
//https://blog.csdn.net/2401_83669813 csdn: @立志成为算法讲师//0-9, 直接转换成数字
//A-F, 跟'A'的差 + 10
int to10(char c) {if (c <= '9') {return c - '0';}return c - 'A' + 10;
}void solve() {int k;std::string numK;std::cin >> k >> numK;long long ans = 0;int p = 0;for (int i = numK.size() - 1; i >= 0; i--) {int num = to10(numK[i]);ans += (long long)num * std::pow(k, p);p++;}std::cout << ans << "\n";
}int main() {/*我们先要理解进制的本质一个K进制的数字,表示的是逢K进一十进制:0..9 10..19..八进制:0..7 10..17十进制23 = 2 * 10 + 3八进制23 = 2 * 8 + 3十进制的123 = 1 * 10 * 10 + 2 * 10 + 3八进制的123 = 1 * (8 ^ 2) + 2 * (8 ^ 1) + 3 * (8 ^ 0)*/int N;std::cin >> N;while (N--) {solve();}
}

题目二:变长编码

B3870 [GESP202309 四级] 变长编码 - 洛谷

解题思路:

首先来理解左移和右移操作。

对于一个数字n,n >> x,表示的是在n的二进制上整体向左移动,小于0的部分剔除掉。

比如101011 >> 3  => 101 (011),011小于0,直接剔除掉即可。那么最终结果是101。

在十进制上,n >> x可以看作n / (2 ^ x)。

反之就是往左移动。(视频里面会有详细的讲解)

然后是与运算和或运算。

网址:Binary Fundamentals

如果有很多位的话,就是按照每一位进行分别进行位运算。

比如 3 & 6可以看成是:

0 1 1

1 1 0

变成 0 1 0

这个题目对一个数字二进制下,分成每组7位,那么我们可以与运算获取这个数字的后7位,然后通过右移运算,让这个数字的二进制每次减少7位。

对最高位进行操作的话,可以用或运算

具体可以看代码和视频解析!

代码(C++):

#include <bits/stdc++.h>
//https://blog.csdn.net/2401_83669813 csdn: @立志成为算法讲师char toChar(int num) {if (num < 10) {return num + '0';}return num - 10 + 'A';
}std::string to16(int num) {std::string res(2, '0');res[0] = toChar(num >> 4);res[1] = toChar(num & 15);return res;
}int main() {/*左移,右移运算n >> x与运算和或运算&,|1.不断将数字右移7位,通过与运算获取最后的7位数字2.对于在最高位添加1,可以通过或运算操作*/long long n;std::cin >> n;if (n == 0) {std::cout << "00";return 0;}//1.while (n > 0) {int num = n & 0x7F;//0111 1111n >>= 7;//2.if (n > 0) {//1000 0000num |= 0x80;}std::cout << to16(num) << " ";}
}

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

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

相关文章

【AI编程工具IDE/CLI/插件专栏】-国外IDE与Cursor能力对比

AI编程专栏(二) - Cursor 深度使用指南 Cursor 深度使用指南(二) - 新能力使用教程 从Trae 2.0与CodeBuddy IDE发布&#xff0c;谈大厂布局IDE 如何选择AI IDE&#xff1f;对比Cursor分析功能差异 AI编程工具IDE/CLI/插件专栏-热门AI编程CLI初识与IDE对 前面文章介绍过了国…

word2vector细致分解(CBOW, SKIP_GRAM, 层次soft Max, 负采样)

1 前世今生&#xff1a;NGRAM NGRAM&#xff1a;将词当成一个离散的单元&#xff08;因此存在一定的局限性&#xff0c;没有考虑到词与词之间的关系&#xff09; neural network language model&#xff1a;只能处理定长序列&#xff0c;训练慢。使用RNN之后有所改善 2 两种训…

Elasticsearch向量库

在Elasticsearch&#xff08;ES&#xff09;最新版本&#xff08;目前8.x系列&#xff09;中&#xff0c;无需额外的“embedding插件”&#xff0c;因为ES从7.14版本开始就原生支持向量数据类型&#xff08;dense_vector&#xff09; 和向量搜索能力&#xff0c;可直接作为向量…

嵌入式学习的第四十四天-ARM

一、ARM内核基础知识1.ALU算术逻辑单元&#xff1b;完成运算的电路2.通用寄存器&#xff1a;R0~R15R13&#xff08;SP&#xff09;&#xff1a;栈指针寄存器&#xff1a;指向栈的指针&#xff08;指向正确的位置&#xff09;&#xff0c;为了保护现场 R14&#xff08;LR…

QML开发:QML中的基本元素

文章目录一、概述二、常用基本元素2.1 基础视觉元素&#xff08;常用于布局和显示&#xff09;2.1.1 元素 Item 的介绍和使用2.1.2 元素 Rectangle 的介绍和使用2.1.3 元素 Image 的介绍和使用2.1.4 元素 Text 的介绍和使用2.2 交互元素&#xff08;用于接收用户操作&#xff0…

Spring AI 项目实战(二十二):Spring Boot + AI +DeepSeek实现智能合同数据问答助手​(附完整源码)

系列文章 序号 文章名称 1 Spring AI 项目实战(一):Spring AI 核心模块入门 2 Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码) 3 Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码) 4

从 0 到 1 创建 InfluxDB 3 表:标签、字段、命名规范一篇讲透

前言 在使用 InfluxDB 3 存储时序数据时,表的设计堪比盖房子打地基,地基打歪,数据“塌方”指日可待。InfluxDB 虽然不是传统意义上的关系型数据库,但它有自己的一套“审美”:标签(Tags)和字段(Fields)是它的双核心,谁先谁后,关系重大,顺序写错,查询性能立马打折。…

[sqlserver] 分析SQL Server中执行效率较低的SQL语句

查询性能分析较低的SQL语句 -- 查询性能分析 SELECT TOP 50qs.creation_time AS [编译时间],qs.last_execution_time AS [最后执行时间],qs.execution_count AS [执行次数],qs.total_worker_time/1000 AS [CPU总时间(ms)],qs.total_elapsed_time/1000 AS [总耗时(ms)],(qs.tota…

SmartX 用户建云实践|宝信软件:搭建“双架构”私有云平台,灵活满足多种业务需求

上海宝信软件股份有限公司&#xff08;以下简称宝信软件&#xff09;系中国宝武实际控制、宝钢股份控股的上市软件企业&#xff0c;是中国领先的工业软件行业应用解决方案和服务提供商&#xff0c;为宝武集团提供整体 IT 基础架构解决方案与服务。为统一管理宝武集团旗下分散在…

应用科普 | 漫谈6G通信的未来

【摘要前言】2019年推出的5G无线通信将移动设备的性能提升到了一个新的水平。首批应用利用5G提供移动宽带&#xff0c;使消费者能够以远超以往的速度进行流媒体传输、游戏和连接。随着技术的成熟&#xff0c;它已成为物联网的关键组成部分&#xff0c;将机器汇集到一个全球网络…

从零开始用 Eclipse 写第一个 Java 程序:HelloWorld 全流程 + 避坑指南

对于 Java 初学者来说&#xff0c;第一次用 Eclipse 写程序往往会手足无措 —— 找不到新建项目的入口、不知道包和类该怎么命名、运行时控制台突然消失…… 别慌&#xff01;本文以最经典的 “HelloWorld” 为例&#xff0c;手把手带你走完从 Eclipse 项目创建到程序运行的完整…

NVIDIA Isaac GR00T N1.5 源码剖析与复现

​ 0. 前言 2025.6.11 NVIDIA Isaac GR00T N1 进化&#xff0c;英伟达发布了NVIDIA Isaac GR00T N1.5模型&#xff0c;效果比原先提高了不少&#xff0c;故来复现一下&#xff0c;看看能否应用于我的项目中&#xff1a; 代码页 项目页 模型页 ​ 以下是使用 GR00T N1.5 的一般…

手把手教你驯服Apache IoTDB时序数据库,开启时序数据管理新征程!

手把手教你驯服Apache IoTDB&#xff0c;开启时序数据管理新征程&#xff01; 本文是一篇幽默风趣的 Apache IoTDB 时序数据库安装使用教程。从 “这东西能不能吃” 的灵魂拷问切入&#xff0c;先科普 IoTDB 的 “真实身份”—— 一款专为时序数据设计的数据库利器&#xff0c;…

剧本杀小程序系统开发:开启沉浸式推理社交新纪元

在数字化浪潮席卷的当下&#xff0c;传统娱乐方式正经历着前所未有的变革&#xff0c;剧本杀这一融合了推理、角色扮演与社交互动的热门游戏&#xff0c;也搭上了科技的快车&#xff0c;剧本杀小程序系统开发应运而生&#xff0c;为玩家们开启了一扇通往沉浸式推理社交新世界的…

Ubuntu系统VScode实现opencv(c++)视频的处理与保存

通过OpenCV等计算机视觉工具&#xff0c;开发者可以像处理静态图像一样对视频流逐帧分析&#xff1a;从简单的裁剪、旋转、色彩校正&#xff0c;到复杂的稳像、目标跟踪、超分辨率重建。而如何将处理后的高帧率、高动态范围数据高效压缩并封装为通用格式&#xff08;如MP4、AVI…

三坐标测量技术解析:从基础原理到斜孔测量难点突破

基础原理 三坐标测量仪&#xff08;Coordinate Measuring Machine&#xff0c;CMM&#xff09;这种集机械、电子、计算机技术于一体的三维测量设备&#xff0c;其核心技术原理在于&#xff1a;当接触式或非接触式测头接触感应到工件表面时&#xff0c;测量系统会瞬间记录三个坐…

【MySQL基础篇】:MySQL常用内置函数以及实用示例

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;MySQL篇–CSDN博客 文章目录内置函数一.日期函数二.字符串函数三.数学函数四.其他函数内置函…

Mirror学习笔记

Mirror官方案例操作 一、导入Mirror 在unity商城订阅Mirror https://assetstore.unity.com/packages/tools/network/mirror-129321 使用unity创建工程 &#xff08;推荐版本&#xff1a;目前建议使用 Unity 2020 或 2021 LTS 版本&#xff1b;超出这些版本的可能可以运行…

R4周打卡——Pytorch实现 LSTM火灾预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、准备工作 1.1导入数据 1.2数据集可视化 二、构建数据集 2.1数据集预处理 2.2设置X、Y 2.3检查数据集中有没有空值 2.4划分数据集 三、构建模型 3.1定义训…

【视觉识别】Ubuntu 22.04 上编译安装OPENCV 4.12.0 鲁班猫V5

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…