不得不说今天做的题怎么都这么坑呢。这道题若是要一个标准的程序员来做的话,就相当于hdu上面的第一个题一样,毫无意义。。
但是我居然WA了,看到这个题的第一反应就是,要把16# ——>10#,然后再把10# ——>16#,来做,以为这是一个进制的转换,最后看博客才知道,原来可以直接输入输出16#,不禁觉得自己好傻啊 ^-^
下面是刚开始愚蠢的做法:
#include下面是正确的代码:#include void p3(int n)//10#->16#{ int a[20],i=0; int flag = 0; if(n<0) { flag = 1; n = -n;} if(n==0) printf("0"); while(n!=0) { a[i++]=n%16; if(a[i-1]>=10) a[i-1]=a[i-1]-10+65; n=n/16; } if(flag==1) printf("-"); for(i=i-1;i>=0;i--) if(a[i]>=10) printf("%c",a[i]); else printf("%d",a[i]); printf("\n");}int q3(char b[])//16#->10#{ int i=0,sum=0; int flag = 0; for(i=0;b[i]!='\0';i++) { if(b[i]>='A'&&b[i]<='F') sum=sum*16+b[i]-55; else if(b[i]>='0'&&b[i]<='9') sum=sum*16+b[i]-'0'; else { if(b[i]=='-') flag = 1; } } if(flag == 1) return -sum; else return sum;}int main(){ char a[20],b[20]; while(~scanf("%s%s",a,b)) { int sum1 = q3(a); int sum2 = q3(b); // printf("sum1 = %d sum2 = %d\n",sum1,sum2); int sum = sum1+sum2; p3(sum); } return 0;}
#include下面是别人的博客:int main(){ __int64 a,b,c; while(~scanf("%I64X %I64X",&a,&b)) { c = a+b; if(c>=0) printf("%I64X\n",c); else printf("-%I64X\n",-c); } return 0;}
http://blog.csdn.net/tigerisland45/article/details/51828341
附上一张截图: