EOJ 3037 十六进制加法
请编写程序实现两个十六进制整数的加法。
例如:十六进制整数 3762 和 05C3,3762+05C3 =3D25
十六进制整数 CB9 和 957,CB9+957=1610
Input
第 1 行:一个整数 T (1≤T≤10) 为问题数。
接下来 T 行,每行输入两个十六进制整数 n 和 m (n,m 为不超过 200 位的十六进制整数),A~F 全部为大写字母。 两个整数之间用一个空格分隔。
Output
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0:
等)。然后对应每个问题在一行中输出两个十六进制整数相加的结果,字母全部用大写字母。
#include <stdio.h>
#include <stdlib.h>
int init(char *a)
{
char c;
int pos=;
while((c=getchar())!=' '&&c!='\n')
a[pos++]=c;
a[pos]=;
return pos-;
}//返回值是为了确定两个数组的长度
int ctoi(char c) {return (c>=''&&c<='')?c-'':c-'A'+;}
char itoc(int i) {return i<=?i+'':i-+'A';}
void add(char* to,char* from,int t,int f)
{
int carry;char plus='';
for(;from[f]!=;f--,t--)
{
carry=ctoi(to[t])+ctoi(from[f])+ctoi(plus); 将两位转化成整数后相加
to[t]=itoc(carry%);
plus=itoc(carry/);//进位
}
while(t>=&&(carry=ctoi(to[t])+ctoi(plus))>)//不停进位的情况
{
to[t]=itoc(carry%);
plus=itoc(carry/);
t--;
}
if(plus>'')
to[]=plus;//留下一位空格以放置最后的进位
}
void print(char *s)
{
char *p=s;
if(p[]==) p++;//遗留的空位可能没有被使用
printf("%s\n",p);
}
int main()
{
int cas;scanf("%d",&cas);getchar();
for(int m=;m<cas;m++)
{
char a[],b[];
int pa,pb;
a[]=b[]=;//留下一位空格以放置最后的进位
pa=init(a);
pb=init(b);
printf("case #%d:\n",m);
if(pa>=pb)//哪个长就把结果放置在哪个里
{
add(a,b,pa,pb);
print(a);
}
else
{
add(b,a,pb,pa);
print(b);
}
}
return ;
}
类似于大整数,还是有固定的模板的。
EOJ 3037 十六进制加法的更多相关文章
- C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制!
我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1.9.10.297.952 等,一个数字最多能表示九,如果要表示十.十一.二十九.一百等,就需要多个数字组合起来. 例如表示 5+8 的结果 ...
- 20165221 《网络对抗技术》EXP1 PC平台逆向破解
20165221 <网络对抗技术>EXP1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ...
- 20191310Lee_yellow缓冲区溢出实验
缓冲区溢出实验 1.什么是缓冲区溢出 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据 ...
- php 实现二进制加法运算
php实现二进制加法: 思路:没有工作中应用过此场景,但十进制的加法还是经常做的,能不能用十进制加法变相实现呢? 答案是可以的,并且php也提供进制间转换的函数,我的实现使用了 bindec():二进 ...
- js中的一元加法和一元减法
大多数人都熟悉一元加法和一元减法,它们在 ECMAScript 中的用法与您高中数学中学到的用法相同. 一元加法本质上对数字无任何影响: var iNum = 20; iNum = +iNum; al ...
- [javaSE] 进制转换(二进制十进制十六进制八进制)
十进制转二进制,除2运算 十进制6转二进制是 110 (注意从右往左写,使用算式从下往上写) 二进制转十进制,乘2过程 二进制110转十进制 0*2的0次方+1*2的1次方+1*2的2次方=6 对 ...
- 我的Java开发学习之旅------>二进制、八进制、十进制、十六进制之间转换
一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权 ...
- iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制
iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...
- 用CIL写程序:写个函数做加法
前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ...
随机推荐
- 上传预览图片的插件jquery-fileupload
上传预览图片的插件jquery-fileupload github地址:https://github.com/blueimp/jQuery-File-Upload 中文文档:http://www.jq ...
- Android开机图片替换
Android开机图片替换 Android从启动到进入Launcher一共会展示三张图片,如果只是更换静态图则更换这三张图片即可,要想换成动画那就要另外操作. 首先查找这个文件: /bootab ...
- asp.net ajax 简单案例
第一步先引用 scriptManager <asp:UpdatePanel ID="UpdatePanelGuanZhu" runat="server"& ...
- openMSP430之openmsp430-loader
openmsp430-loader This simple program allows the user to load the openMSP430 program memory with an ...
- jstl与el结合常见用法
JSTL Functions标签库 在JSP文件中使用Functions标签库,要先通过taglib指令引入该标签库: <%@taglib uri=”http://java.sun.com/js ...
- javaee IO流作业
package Zy; import java.io.Serializable; public class Student implements Serializable{ private stati ...
- 15.5.5 【Task实现细节】围绕 await 表达式的控制
任何 await 表达式均表示执行路径的一个分支.首先,被等待的异步操作得到一个awaiter,然后检查其 IsCompleted 属性.若返回 true ,即可立即获得结果并继续.否则,需进行以下处 ...
- for 循环的反汇编浅析
for 循环 for 循环是使用频度最高的循环结构,我们通过 C 语言反汇编实例,来分析 for 循环结构在计算机底层的原理和构造.首先,我们编写一个简单的 for 循环: 为了方便观察,我们用十六进 ...
- 为什么on用的时候会失效?
困扰了我一个很久的问题今天终于得带解决了,关于 on 的 用法: $("#hasLabels .link").on("click",function(){ .. ...
- PAT 1065. A+B and C
Given three integers A, B and C in [-263, 263], you are supposed to tell whether A+B > C. Input S ...