1 /* 2 A-10 B-11 C-12 D-13 E-14 F-15 3 */ 4 #include <stdio.h> 5 #include <string.h> 6 #include <math.h> 7 struct number{ 8 int sign; /* 1 --> positive number; 9 0 --> negative number; 10 */ 11 __int64 num; 12 }; 13 number change(char str[]){ 14 __int64 tmp=0; 15 number res; 16 res.num=0; 17 int len=strlen(str); 18 __int64 i,j; 19 if(str[0]=='+'||str[0]=='-'){ 20 if(str[0]=='+') res.sign=1; 21 else res.sign=0; 22 for(i=1;i<len;++i){ 23 if(str[i]>='0'&&str[i]<='9'){ 24 tmp=str[i]-'0'; 25 }else tmp=str[i]-'A'+10; 26 res.num+=tmp*(int)pow(16.0,double(len-1-i)); 27 } 28 }else{ 29 res.sign=1; 30 for(i=0;i<len;++i){ 31 if(str[i]>='0'&&str[i]<='9'){ 32 tmp=str[i]-'0'; 33 }else tmp=str[i]-'A'+10; 34 res.num+=tmp*(int)pow(16.0,double(len-1-i)); 35 } 36 } 37 return res; 38 } 39 int change_sign(number a){ 40 if(a.sign==1) return a.num; 41 else return 0-a.num; 42 } 43 void put_h(int num){ 44 __int64 t,cnt=0; 45 int tmp[10000]; 46 if(num<0) putchar('-'),num=-num; 47 do{ 48 tmp[cnt++]=num%16; 49 num/=16; 50 }while(num); 51 while(cnt--&&cnt>=0){ 52 if(tmp[cnt]>9) putchar('A'+tmp[cnt]-10); 53 else putchar('0'+tmp[cnt]); 54 } 55 putchar(' '); 56 57 } 58 int main(){ 59 char a[10000],b[10000]; 60 __int64 A,B; 61 while(~scanf("%s%s",a,b)){ 62 A=change_sign(change(a)); 63 B=change_sign(change(b)); 64 printf("res=%d ",A+B); 65 put_h(A+B); 66 } 67 return 0; 68 }