B3870 [GESP202309 四级] 变长编码(膜拜版)

news2025/1/13 10:13:12

本题包括:

1.进制的超强使用

2.进制的截位使用

本题参考洛谷题解:https://www.luogu.com.cn/article/daqzhu5m 

 (在线膜拜作者的代码中)

难度:普及-


对于笔者而言:

这道题在洛谷上通过率很高,有大概一半。因为这道题整体而言,思路不难,用辗转相除法还是按照题目给的先转二进制再转十六进制来说,出错率不高

写这篇题解的主要目的是因为:去题解区看到的短小精悍版,思考良久,终觉其精妙无比,题解原作者未写解析,故:帮助看不懂的同学们写一份


先上代码

#include<bits/stdc++.h>
using namespace std;
long long n;
string a="0123456789ABCDEF";//十六进制的数字
void print(int i){//输出
	cout<<a[i/16]<<a[i%16]<<" ";
}
int main(){
	cin>>n;
	if(n==0){cout<<"00";return 0;}//0需要特判
	while(n>0){
		int k=n%128;//2^7=128,7位一截
		n/=128;
		if(n>0)print(k+128);//判断是否为最高位
		else print(k);
	}
	return 0;
}

初见觉得很怪:

为什么n%128之后,n/128?这样的结果为什么成立?

为什么不是最高位的状态,k+128?

以及,为什么最后 i/16

我们一个一个来细讲:

 1. 为什么n%128之后,n/128?这样的结果为什么成立?

因为数据是7位一截,而2的7次方为128,刚好去除128的一截,%为得到后面的数据,/为得到去除%后的数据,这样写不明显,我们用二进制来看一下:

对于数据926

二进制为:111 0011110

七比特为一截的在高位补0:0000111 0011110

得到的十六进制最终结果为:9E  07

如果我们对原数据 %128,得到的就是 0011110

如果我们对原数据 /128,得到的就是 0000111

结果成立,并且与进制不违背

2. 为什么不是最高位的状态,k+128?

因为题目中的第二点规则:

即如果不是最后一组,高位都需要补1

而k+128就是在补1!

 3. 为什么最后 i/16?

这个问题最简单了,是在转16进制,而将16进制对应的数字和字母都放在字符串中,方便读取


如果大家有不懂的,或者文章有何不正,都欢迎评论留言进行讨论或者私信作者 

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

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

相关文章

“JavaScript: void(0)的替代方案有哪些?”

学习目标&#xff1a; 理解javascript:void(0)的工作原理&#xff0c;以及它在前端开发中的作用和用途。掌握javascript:void(0)的正确用法&#xff0c;包括在HTML中使用和在事件处理程序中使用。能够识别javascript:void(0)可能引起的常见问题&#xff0c;并学会相应的解决方…

理财第一课:炒股词典

文章目录 基础代码规则委比委差量比换手率市盈率市净率 短线操作散户亏钱的原因庄家分析炒股战法波浪理论其它 钱者&#xff0c;人生之大事&#xff0c;死生存亡之地&#xff0c;不可不察也。耕田之利&#xff0c;十倍&#xff1b;珠玉之赢&#xff0c;百倍&#xff1b;闹革命&…

安科瑞消防产品监控系统解决方案【电气火灾 消防设备 】

一、电气火灾监控系统 系统概述 l针对低压用电环节各回路中的剩余电流、温度和故障电弧等进行实时监测&#xff1b; l侧重点为低压用电环节的安全性&#xff0c;当剩余电流越限时报警输出&#xff0c;以提醒维护人员进行安全检查&#xff0c;防止因漏电引起的火灾发生&#…

【GameFramework框架内置模块】9、有限状态机(FSM)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像

本文为从零开始写 Docker 系列第七篇&#xff0c;实现类似 docker commit 的功能&#xff0c;把运行状态的容器存储成镜像保存下来。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; 核心原…

解决jenkins运行磁盘满的问题

参考&#xff1a;https://blog.csdn.net/ouyang_peng/article/details/79225993 分配磁盘空间相关操作&#xff1a; https://cloud.tencent.com/developer/article/2230624 登录jenkins相对应的服务或容器中查看磁盘情况&#xff1a; df -h在102挂载服务器上看到是这两个文件…

OSPF特殊区域(stub\nssa)

stub区域——只有1类、2类、3类&#xff1b;完全stub区域——只有1类、2类 NSSA区域&#xff1a;本区域将自己引入的外部路由发布给其他区域&#xff0c;但不需要接收其他区域的路由 在NSSA区域的路由器上&#xff0c;引入外部路由时&#xff0c;不会转换成5类LSA&#xff0c…

Ethsign银河活动开启,简单参与领6个NFT

简介&#xff1a;EthSign是一个基于区块链技术的去中心化电子签名平台&#xff0c;目的是解决传统中心化电子签名服务的各种问题。用户可以使用钱包或社交媒体帐户生成的私钥签署文件和协议&#xff0c;数字签名记录在链上&#xff0c;文件经过加密存储在去中心化存储网络中&am…

CSS学习(3)-浮动和定位

一、浮动 1. 元素浮动后的特点 脱离文档流。不管浮动前是什么元素&#xff0c;浮动后&#xff1a;默认宽与高都是被内容撑开&#xff08;尽可能小&#xff09;&#xff0c;而且可以设置宽 高。不会独占一行&#xff0c;可以与其他元素共用一行。不会 margin 合并&#xff0c;…

DETR算法简介

DETR方法是一种使用了Transformer的端到端的目标检测方法&#xff0c;也是经典目标检测算法之一&#xff0c;本文将用最少的话&#xff0c;介绍DETR算法的大致思想。之前的方法或多或少的都不要添加一下额外的步骤&#xff0c;进行人为干预&#xff0c;即使是号称端到端的YOLO系…

Linux卸载Zabbix6 Agent v1 v2 简易操作手册

一、Zabbix6 卸载Zabbix Agent v1 要在Linux系统上卸载Zabbix Agent v1(zabbix_agent)&#xff0c;您可以使用包管理器执行此操作。以下是针对不同Linux发行版的卸载命令&#xff1a; # 对于基于Debian的系统&#xff08;如Ubuntu&#xff09;: sudo apt-get remove zabbix-ag…

Java项目实战记录:雷达数据插值

Java项目实战记录&#xff1a;雷达数据插值 业务背景 之前已经实现了雷达数据的解析和雷达数据后端渲染功能&#xff0c;现在又有一个新的需求。之前是将雷达数据点使用GeoTools渲染成PNG的图片&#xff0c;但这个数据返给前端后不能无极缩放&#xff0c;因为它是个栅格图片&…

ArmSoM-Sige RK3588开发板使用手册

Sige7 使用手册&#xff0c;帮助用户了解Sige7的基本使用和需要的准备工作。 当您拿到产品的时候&#xff0c;您需要知道它的型号以及硬件版本&#xff0c;这些信息都可以在板子上的丝印找到。我们会尽可能详细地向您介绍产品的信息。 入门准备​ 在开始使用 ArmSoM-Sige7 之…

matlab空间曲线图形

说明&#xff1a;问题来自CSDN-问答板块&#xff0c;题主提问。 需求&#xff1a;如何用子图命令画出平面y2z&#xff0c;z2y与球面x^2y^2z^25相交的空间曲线图形。需要完整代码和结果的图片。 一、先看效果图 二、代码 % 创建figure figure% 创建二维网格&#xff0c;用于定…

数据结构的概念大合集03(栈)

概念大合集03 1、栈1.1 栈的定义和特点1.2 栈的基础操作1.3 栈的顺序存储1.3.1 顺序栈1.3.2 栈空&#xff0c;栈满&#xff0c;进栈&#xff0c;出栈的基本思想1.3.3 共享栈1.3.3.1 共享栈的4要素 1.4 栈的链式存储1.4.1 链栈的实现1.4.2 链栈的4个要素 1、栈 1.1 栈的定义和特…

酷开系统用电视为居家生活打开精彩窗口|酷开科技|酷开会员|

随着互联网的发展&#xff0c;电视也承载了更多的功能。相比于传统的电视&#xff0c;如今的智能电视屏幕更大、分辨率更高、色彩更加鲜艳&#xff0c;能够呈现出更加逼真的画面效果。当观众观看大屏电视时&#xff0c;仿佛置身于电影大幕的场景之中&#xff0c;感受到更为震撼…

边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 整体介绍(一)

专栏目录 边缘计算WEB端应用融合&#xff1a;AI行为识别智能监控系统搭建指南 – 整体介绍&#xff08;一&#xff09; 边缘计算WEB端应用融合&#xff1a;AI行为识别智能监控系统搭建指南 – 边缘设备图像识别及部署&#xff08;二&#xff09; 边缘计算WEB端应用融合&#xf…

洛谷_P2404 自然数的拆分问题_python写法

P2404 自然数的拆分问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路记录&#xff1a; 这道题是一道简单的DFS。 n int(input()) data [0 for _ in range(110)] def dfs(sum, p, cnt):if sum>n:returnif sum n:print(data[0],end)for i in range(1,cnt):print(f{…

centos7安装jdk详细步骤(yum安装与手动安装)

centos7安装jdk详细步骤&#xff08;yum安装与手动安装&#xff09; 一、使用yum安装1. 准备工作2. 检查系统是否自带jdk3. 安装jdk 二、手动安装jdk1. 下载上传jdk2. 安装jdk3. 配置环境变量 一、使用yum安装 1. 准备工作 如果你的机器可以联网可以使用此方法 ping www.baidu…

YOLOv7 | 添加GSConv,VoVGSCSP等多种卷积,有效提升目标检测效果,代码改进(超详细)

⭐欢迎大家订阅我的专栏一起学习⭐ &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; YOLOv5涨点专栏&#xff1a;http://t.csdnimg.cn/QdCj6 YOLOv7专栏&#xff1a; http://t.csdnimg.cn/dy…