A+B(1)★★

题目描述

又到了ACM校赛的时候了,SY想要秀一下他的编程能力,他用汇编语言编写了一个2数相加的加法程序,但是出乎意料的是,计算机把它输入的数看做是16进制的数(其实就是没有调整成BCD码),然后给出了一个16进制的答案,幸好SY还存有他的原数据,现在给你原来的数据,请你帮他算出正确答案,当然顺便也输出电脑给出的答案吧。(所有的数据都在int范围内,且非负)

输入

第一行输入一个t,表示有t组数据。

接下来有t行,每行包含两数,表示两个要相加的数。

输出

输出两行,第一行输出正确答案,第二行输出电脑给出的答案

样例输入

2
56 17
10 2

样例输出

73
6D
12
12
#include <bits/stdc++.h>
using namespace std;
int main(){
    int t,a,b,ah,bh,ch;
    cin>>t;
    while(t--)
    {
        ah=0;bh=0;
        cin>>a>>b;
        cout<<a+b<<endl;
        int i=0;
    while(a>0)
    {
        ah+=(a%10)*pow(16,i);
        i++;a=a/10;
    }
    i=0;
    while(b>0)
    {
        bh+=(b%10)*pow(16,i);
        i++;b=b/10;
    }
    ch=ah+bh;
    string s="";
    string a[16]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
    if(ch==0) s="0";
    while(ch>0)
    {
        s=a[ch%16]+s;
        ch=ch/16;
    }
    cout<<s<<endl;
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值