Problem C
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 21 Accepted Submission(s) : 6
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
There must be many A + B problems in our HDOJ , now a new one is coming.
Give you two hexadecimal integers , your task is to calculate the sum of them,and print it in hexadecimal too.
Easy ? AC it !
Input
The input contains several test cases, please process to the end of the file.
Each case consists of two hexadecimal integers A and B in a line seperated by a blank.
The length of A and B is less than 15.
Output
For each test case,print the sum of A and B in hexadecimal in one line.
Sample Input
+A -A
+1A 12
1A -9
-1A -12
1A -AA
Sample Output
0
2C
11
-2C
-90
#include
#include
#include
using namespace std;
int main()
{
char a[20],b[20];
__int64 L1,L2,i,sum1,sum2,sum3,j,c[1000];
while(cin>>a>>b)
{
L1=strlen(a);
L2=strlen(b);
sum2=sum1=0;
if(a[0]=='-'||a[0]=='+')
i=1;
else
i=0;
for(;i
{
sum1*=16;
if(a[i]>='A')
sum1+=a[i]-'A'+10;
else
sum1+=a[i]-'0';
}
if(b[0]=='-'||b[0]=='+')
i=1;
else
i=0;
for(;i
{
sum2*=16;
if(b[i]>='A')
sum2+=b[i]-'A'+10;
else
sum2+=b[i]-'0';
}
if(a[0]=='-'&&b[0]=='-')
sum3=-(sum1+sum2);
else if(a[0]!='-'&&b[0]=='-')
sum3=sum1-sum2;
else if(a[0]=='-'&&b[0]!='-')
sum3=sum2-sum1;
else
sum3=sum2+sum1;
if(sum3>=0)
{
for(i=0;;i++)
{
c[i]=sum3%16;
if(sum3/16==0)
break;
sum3=sum3/16;
}
for(j=i;j>=0;j--)
{
if(c[j]>9)
printf("%I64c",char(c[j]+'A'-10));
else
printf("%I64d",c[j]);
}
printf("\n");
}
else
{
sum3=-sum3;
for(i=0;;i++)
{
c[i]=sum3%16;
if(sum3/16==0)
break;
sum3=sum3/16;
}
cout<
for(j=i;j>=0;j--)
{
if(c[j]>9)
printf("%I64c",char(c[j]+'A'-10));
else
printf("%I64d",c[j]);
}
printf("\n");
}
}
return 0;
}