标签:
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