标签:
3 29+4823 18be+6784 4ae1-3d6c
44114 100102 6565
上传者
这个我写的超时了:
#include<iostream> #include<string.h> #include<cmath> using namespace std; int main() { int T,lena,i,k,l; char a[20]; char b[20];//前面的 char c[20];//后面的 int s[20];//余数 cin>>T; while(T--) { l=0; cin>>a; int g=0; int j=0; lena=strlen(a); for(i=0;i<lena;i++) { if(a[i]=='+'||a[i]=='-') { k=i; break; } } for(i=0;i<k;i++) b[g++]=a[i]; b[g]='\0'; for(i=k+1;i<lena;i++) c[j++]=a[i]; c[j]='\0'; int lenb=strlen(b); int lenc=strlen(c); int f1=0,f2=0; int sum=0,sum1=0; for(i=lenb-1;i>=0;i--) { if(b[i]=='a') b[i]='9'+1; else if(b[i]=='b') b[i]='9'+2; else if(b[i]=='c') b[i]='9'+3; else if(b[i]=='d') b[i]='9'+4; else if(b[i]=='e') b[i]='9'+5; else if(b[i]=='f') b[i]='9'+6; sum=sum+(b[i]-'0')*pow(16,f1++); } for(i=lenc-1;i>=0;i--) { if(c[i]=='a') c[i]='9'+1; else if(c[i]=='b') c[i]='9'+2; else if(c[i]=='c') c[i]='9'+3; else if(c[i]=='d') c[i]='9'+4; else if(c[i]=='e') c[i]='9'+5; else if(c[i]=='f') c[i]='9'+6; sum1=sum1+(c[i]-'0')*pow(16,f2++); } if(a[k]=='+') sum=sum1+sum; else if(a[k]=='-') sum=sum-sum1; while(sum!=0) { s[l++]=sum%8; sum=sum/8; } s[l]='\0'; for(i=l-1;i>=0;i--) cout<<s[i]; cout<<endl; } return 0; }
这是正解:
#include<iostream> #include<stdio.h> using namespace std; int main() { int T; int a,c; char b; cin>>T; while(T--) { scanf("%x%c%x",&a,&b,&c); if(b=='+') printf("%o\n",a+c); if(b=='-') printf("%o\n",a-c); } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43163799