HDU 2057
今天做这道A+B的题我把它当成进制转换来做,结果发现网上有更加简单的做法因为printf函数可以以十六进制的形式输出一个数……妈呀没想到这里去又出了几处错,慢慢调试才AC,结果花了两个多小时……。不管了,当复习一下进制转换233333.
献上代码:
#include<stdio.h> #include<string.h> #include<math.h> int main() { char str_oxa[17]={'0'}; char str_oxb[17]={'0'}; while(scanf("%s %s",str_oxa,str_oxb)!=EOF) { long long int a=0,b=0; int i,j; for(i=strlen(str_oxa)-1,j=0;i>=0;i--,j++) { if(str_oxa[i]<='F'&&str_oxa[i]>='A')//十进制转十六进制 a+=(str_oxa[i]-55)*(long long int)pow(16,j); else if(str_oxa[i]<='9'&&str_oxa[i]>='0') a+=(str_oxa[i]-48)*(long long int)pow(16,j);//十进制转十六进制 } for(i=strlen(str_oxb)-1,j=0;i>=0;i--,j++) { if(str_oxb[i]<='F'&&str_oxb[i]>='A') b+=(str_oxb[i]-55)*(long long int)pow(16,j); else if(str_oxb[i]<='9'&&str_oxb[i]>='0') b+=(str_oxb[i]-48)*(long long int)pow(16,j); } if(str_oxa[0]=='-') a=-a; if(str_oxb[0]=='-') b=-b; long long int temp_c=a+b,d=0,e=0,k=1; long long int c=fabs(temp_c); i=0; char str_oxc[17]={'0'}; while(k>0)//转回来 { e=c%16; k=c/16; if(e<=15&&e>=10) str_oxc[i]=e+55; else if(e<=9&&e>=0) str_oxc[i]=e+48; c=k; i++; }//转回来 i=0; if(temp_c<0) printf("-"); for(i=strlen(str_oxc)-1;i>0;i--) printf("%c",str_oxc[i]); printf("%c\n",str_oxc[i]); } return 0; }