笔记 | 十六进制不进位加法

这里写自定义目录标题

  • 题目
  • 极笨代码
  • 错误原因
  • 正确代码

题目

Time Limit: 1000 ms
Memory Limit: 256 mb
16进制不进位的加法,即和正常加法类似,只是不用去计算进位的数,比正常的加法更简单。

如A + 6 = 0(正常加法是10,但是由于不进位所以只有0)

输入输出格式
输入描述:
多组测试数据输入。
输入两个十六进制数,字母可能大写也可能小写。
输出描述:
输出不进位加法的结果,字母要求统一大写。
输入输出样例
输入样例#:

123 456
a A
输出样例#:

579
4

极笨代码

#include<bits/stdc++.h>
using namespace std;
int main()
{string a,b;while(cin>>a>>b){int la=a.size();int lb=b.size();int l=max(la,lb),lm=min(la,lb);char t[10005];for(int i=0;i<lm;i++){
//			cout<<a[la-i-1]<<' '<<b[lb-i-1]<<'q'<<endl;if(b[lb-i-1]>='A'&&b[lb-i-1]<='F'){b[lb-i-1]=b[lb-i-1]-'A'+'0'+10;}if(a[la-i-1]>='A'&&a[la-i-1]<='F'){a[la-i-1]=a[la-i-1]-'A'+'0'+10;}if(b[lb-i-1]>='a'&&b[lb-i-1]<='f'){b[lb-i-1]=b[lb-i-1]-'a'+'0'+10;}if(a[la-i-1]>='a'&&a[la-i-1]<='f'){a[la-i-1]=a[la-i-1]-'a'+'0'+10;}int tmp=a[la-i-1]+b[lb-i-1]-'0'-'0';if(tmp>=16){tmp-=16;}if(tmp>=10){t[l-i-1]=tmp-10+'A';}else{t[l-i-1]=tmp+'0';}}if(la>lb){for(int i=0;i<l-lm;i++){if(a[i]>='a'&&a[i]<='f')a[i]=a[i]-'a'+'A';cout<<a[i];}}else{for(int i=0;i<l-lm;i++){if(b[i]>='a'&&b[i]<='f')b[i]=b[i]-'a'+'A';cout<<b[i];}}for(int i=l-lm;i<l;i++){cout<<t[i];}cout<<endl;}return 0;
}

错误原因

主要是在处理十六进制数的部分。

  1. 字符到数字的转换
    在将十六进制字符转换为数字时,您为大写和小写字母都进行了相同的处理。这导致了错误的数值转换。比如:

    if(b[lb-i-1]>='A'&&b[lb-i-1]<='F')
    {b[lb-i-1]=b[lb-i-1]-'A'+'0'+10;
    }
    

    这段代码会修改原字符串的值,而不是简单地获取其十进制值。

  2. 输出顺序:由于您的代码中采用了从后往前处理的方式,所以在输出时可能会出现问题。您处理了长度较短的数字,但在长度较长的数字前加上了长度较短的数字。

  3. 无进位加法:您的代码中:

    if(tmp>16)
    {tmp-=16;
    }
    

    这是不正确的,应该使用 if(tmp>=16)。但实际上,由于是无进位加法,可以简单地使用模16操作 tmp = tmp % 16

除了上述问题,代码结构和其他部分看起来没问题。但确实需要一些调整来确保正确性和简洁性。

正确代码

#include<bits/stdc++.h>
using namespace std;char no_carry_hex_add(char a, char b) {int ia, ib, result;if(a >= '0' && a <= '9') ia = a - '0';else if(a >= 'a' && a <= 'f') ia = a - 'a' + 10;else if(a >= 'A' && a <= 'F') ia = a - 'A' + 10;if(b >= '0' && b <= '9') ib = b - '0';else if(b >= 'a' && b <= 'f') ib = b - 'a' + 10;else if(b >= 'A' && b <= 'F') ib = b - 'A' + 10;result = (ia + ib) % 16;if(result < 10) return '0' + result;else return 'A' + result - 10;
}int main() {string a, b;while(cin >> a >> b) {string result = "";int lenA = a.size();int lenB = b.size();int maxLength = max(lenA, lenB);reverse(a.begin(), a.end());reverse(b.begin(), b.end());for(int i = 0; i < maxLength; i++) {char charA = i < lenA ? a[i] : '0';char charB = i < lenB ? b[i] : '0';result += no_carry_hex_add(charA, charB);}reverse(result.begin(), result.end());cout << result << endl;}return 0;
}

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

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

相关文章

使用JAXB将xml转成Java对象

文章目录 使用JAXB将xml转成Java对象1. xml内容2. Java对象类3. 封装的工具类4. 测试 使用JAXB将xml转成Java对象 工作中遇到个问题&#xff0c;需要将xml转对象&#xff0c;之前复杂的xml都是自己用dom4j来解析组装成Java对象&#xff0c;但是对于简单的&#xff0c;看到了JAX…

SQL中的PowerDesigner逐步深入提问,你能掌握多少?

你提到了有PowerDesigner操作经验&#xff0c;请解释一下PowerDesigner是什么&#xff0c;以及它在数据库设计和开发中的作用是什么&#xff1f; 标准回答&#xff1a; PowerDesigner是一种数据库建模和设计工具&#xff0c;它用于创建数据库模型、设计表结构、定义关系和生成…

android.support.multidex.MultiDexApplication:DexPathList

修改项目的build.gradle文件&#xff0c;使用multidex并添加multidex库作为依赖&#xff0c;如下所示&#xff1a; android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 28 multiDexEnabled true } ... } dependencies { compile com.android.support:multidex…

【漏洞复现】Smanga未授权远程代码执行漏洞(CVE-2023-36076) 附加SQL注入+任意文件读取

文章目录 前言声明一、产品简介一、漏洞描述二、漏洞等级三、影响范围四、漏洞复现五、修复建议六、附加漏洞漏洞一、SQL注入漏洞二、任意文件读取 前言 Smanga存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。 声明 请勿利用文章内的相关技术从…

windows彻底卸载unity

1.控制面板卸载 双击打开桌面的控制面板&#xff0c;选择卸载程序&#xff0c;选中Unity和UnityHub右击卸载。 2.清除unity的注册表 在运行中输入“regedit”双击打开注册表界面 删除 HKEY_CURRENT_USER\Software\Unity 下所有项 删除 HKEY_CURRENT_USER\Software\Unity Tec…

电脑怎么取消磁盘分区?

有时候&#xff0c;我们的电脑会出现一个磁盘爆满&#xff0c;但另一个却空着&#xff0c;这时我们可以通过取消磁盘分区来进行调整&#xff0c;那么&#xff0c;这该怎么操作呢&#xff1f;下面我们就来了解一下。 磁盘管理取消磁盘分区 磁盘管理是Windows自带的磁盘管理工具…

BMS电池管理系统的蓝牙芯片 国产高性能 低功耗蓝牙Soc芯片PHY6222

电池管理系统是对电池进行监控与控制的系统&#xff0c;将采集的电池信息实时反馈给用户&#xff0c;同时根据采集的信息调节参数&#xff0c;充分发挥电池的性能。但是&#xff0c;前技术中&#xff0c;在管理多个电池时&#xff0c;需要人员现场调试与设置&#xff0c;导致其…

leetcode Top100 (5) 盛最多水的容器

/*** 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。* <p>* 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。* <p>* 返回容器可以储存的最大水量。* <p>* …

uniapp h5网页打开白屏

修改了默认基本运行路径&#xff0c;然后直接打开index.html的情况下是会这样&#xff0c;放在nginx服务器上运行就ok了。 把默认的./ 路径修改了&#xff1a;/cloudh5 nginx html目录下放子网站 &#xff1a;/cloudh5&#xff1a;

6-2 pytorch中训练模型的3种方法

Pytorch通常需要用户编写自定义训练循环&#xff0c;训练循环的代码风格因人而异。&#xff08;养成自己的习惯&#xff09; 有3类典型的训练循环代码风格&#xff1a;脚本形式训练循环&#xff0c;函数形式训练循环&#xff0c;类形式训练循环。 下面以minist数据集的多分类模…

Spring Boot集成Redis实现数据缓存

&#x1f33f;欢迎来到衍生星球的CSDN博文&#x1f33f; &#x1f341;本文主要学习Spring Boot集成Redis实现数据缓存 &#x1f341; &#x1f331;我是衍生星球&#xff0c;一个从事集成开发的打工人&#x1f331; ⭐️喜欢的朋友可以关注一下&#x1faf0;&#x1faf0;&…

【最新面试问题记录持续更新,java,kotlin,android,flutter】

最近找工作&#xff0c;复习了下java相关的知识。发现已经对很多概念模糊了。记录一下。部分是往年面试题重新整理&#xff0c;部分是自己面试遇到的问题。持续更新中~ 目录 java相关1. 面向对象设计原则2. 面向对象的特征是什么3. 重载和重写4. 基本数据类型5. 装箱和拆箱6. …

华为aarch64架构的泰山服务器EulerOS 2.0 (SP8)系统离线安装saltstack3003.1实践

华为泰山服务器的CPU芯片架构为aarch64&#xff0c;所装系统为EulerOS 2.0 (SP8)aarch64系统&#xff0c;安装saltstack比较困难。本文讲解通过pip安装方式离线安装saltstack3003.1以进行集中化管理和维护。 一、系统环境 1、操作系统版本 [rootlocalhost ~]# cat /etc/os-r…

uniapp 可输入可选择的........框

安装 uniapp: uni-combox地址 vue页面 <uni-combox :border"false" input"selectname" focus"handleFocus" blur"handleBlur" :candidates"candidates" placeholder"请选择姓名" v-model"name"&g…

Flask实现Web服务调用Python程序

Flask实现Web服务调用Python程序_flask调用python程序_小白白程序员的博客-CSDN博客 【小沐学Python】Python实现Web服务器&#xff08;Flask入门&#xff09;_python flask web开发_爱看书的小沐的博客-CSDN博客

在微信公众号怎么实现投票活动

微信公众号实现投票活动的方法和步骤 一、投票活动的优势 通过投票活动&#xff0c;微信公众号可以实现用户参与、增加互动、了解用户需求等功能&#xff0c;同时也可以提升品牌知名度和用户粘性。以下是一些投票活动的优势&#xff1a; 增加用户参与度&#xff1a;通过投票活…

SpringCloudGateway网关实战(三)

SpringCloudGateway网关实战&#xff08;三&#xff09; 上一章节我们讲了gateway的内置过滤器Filter&#xff0c;本章节我们来讲讲全局过滤器。 自带全局过滤器 在实现自定义全局过滤器前&#xff0c; spring-cloud-starter-gateway依赖本身就自带一些全局过滤器&#xff0…

嵌入式-C语言中的常量

目录 一.简介 二.常量类型 一.简介 在C语言中&#xff0c;常量是指不可改变的值&#xff0c;即固定不变的数据。常量可以是数值、字符或字符串等类型的值。常量可以直接在代码中使用&#xff0c;而无需在程序运行时进行修改。 二.常量类型 C语言中的常量有以下几种类型&…

Unity中Shader的模板测试

文章目录 前言什么是模板测试1、模板缓冲区2、模板缓冲区中存储的值3、模板测试是什么&#xff08;看完以下流程就能知道模板测试是什么&#xff09;模板测试就是在渲染&#xff0c;后渲染的物体前&#xff0c;与渲染前的模板缓冲区的值进行比较&#xff0c;选出符合条件的部分…

sprinboot 引入 Elasticsearch 依赖包

1.springboot与es的版本有比较强的绑定关系&#xff0c;如果springboot工程引入es的依赖后报一些依赖的错误&#xff0c;那么就看表格中的对应关系&#xff0c;将sprinboot或者es的版本做对应的调整 2.本人是从springboot1.x升级到springboot2.x&#xff0c;做了排包工作 3.升级…