码迷,mamicode.com
首页 > 其他好文 > 详细

16进制的简单运算

时间:2015-01-27 09:30:29      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

16进制的简单运算

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述
现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果。
输入
第一行输入一个正整数T(0<T<100000)
接下来有T行,每行输入一个字符串s(长度小于15)字符串中有两个数和一个加号或者一个减号,且表达式合法并且所有运算的数都小于31位
输出
每个表达式输出占一行,输出表达式8进制的结果。
样例输入
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;
}


16进制的简单运算

标签:

原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43163799

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!