#include
using namespace std;
typedef long long ll;
int main()
{
ll a,b;
while(~scanf(“%llX%llX”,&a,&b))
{
if(a+b>=0)
printf(“%llX”,a+b);
else
printf(“-%llX”,-(a+b));
cout<<endl;
}
return 0;
}
【C++】:
#include
#include
using namespace std;
typedef long long ll;
int main()
{
ll a,b;
while(cin>>hex>>a>>b)
{
if(a+b>=0)
cout<<hex<<uppercase<<a+b<<endl;
else
cout<<hex<<uppercase<<‘-’<<-(a+b)<<endl;
}
return 0;
}
可以通过字符串来处理:但是我失败了;有一个朋友成功了,附上代码:
#include<stdio.h>
#include<string.h>
long long fun1(char *a)
{
long long b=0,len,i=0;
len=strlen(a);
if(a[0]‘-’||a[0]‘+’)
{
i=1;
}
while(i!=len)
{
if(a[i]<‘0’||(a[i]>‘9’&&a[i]<‘A’)||a[i]>‘Z’)
i++;
b=b*16;
switch(a[i])
{
case ‘A’:b=b+10;break;
case ‘B’:b=b+11;break;
case ‘C’:b=b+12;break;
case ‘D’:b=b+13;break;
case ‘E’:b=b+14;break;
case ‘F’:b=b+15;break;
default:b=b+a[i]-48;
}
i++;
}
if(a[0]==‘-’)
b=b*(-1);
return b;
}
void fun2(long long num)
{
char b[17];
int i,j;
i=-1;
if(num<0)
{ printf(“-”);
num=num*(-1);
}
if(num==0)
printf(“0\n”);
else
{
while(num/16)
{i++;
switch(num%16)
{
case 10:b[i]=‘A’;break;
case 11:b[i]=‘B’;break;
case 12:b[i]=‘C’;break;
case 13:b[i]=‘D’;break;
case 14:b[i]=‘E’;break;
case 15:b[i]=‘F’;break;
default:b[i]=num%16+48;
}
num=num/16;
}
if(num%16!=0)
{i++;
switch(num%16)
{
case 10:b[i]=‘A’;break;
case 11:b[i]=‘B’;break;
case 12:b[i]=‘C’;break;
case 13:b[i]=‘D’;break;
case 14:b[i]=‘E’;break;
case 15:b[i]=‘F’;break;
default:b[i]=num%16+48;
}
}
for(;i>=0;i–)
printf(“%c”,b[i]);
printf(“\n”);
}
}
int main()
{
char a[16],b[16];
while(~scanf(“%s %s”,a,b))
{
long long num;
num=fun1(a)+fun1(b);
fun2(num);
}
return 0;
}
不得不说这个大佬的基本功,太强了;
下面附加不同进制数从键盘输入:
【c++】:
======
默认进制
cin
or cout
在默认情况下按照十进制输入输出
八进制
要使输入为八进制数,首先切换至八进制输入
cin >> oct;
//接下里就可以输入八进制数了
cin >> a; // a 是八进制数
十六进制
要使输入为十六进制数,首先切换至十六进制输入
cin >> hex;
//接下里就可以输入十六进制数了
cin >> a; // a 是十六进制数
转换回十进制
要使输入为十进制数,首先切换至十进制输入
cin >> dec;
//接下里就可以输入十进制数了
cin >> a; // a 是十进制数
最后附加代码验证:
// 八进制:
#include
#include
using namespace std;
typedef long long ll;
int main()
{
ll a,b;
while(cin>>oct>>a>>b)
{
cout<<oct<<a+b<<endl;
}
return 0;
}
4 6
12
4 7