您的位置:首页 > 编程语言 > Java开发

NYOJ 244 16进制的简单运算

2013-04-30 18:22 204 查看

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

 

 

代码:

 

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int N=input.nextInt();
while(N-->0){
String str=input.next();
char str1[]=str.toCharArray();
int str2[]=new int[33];
char c='0';
int e=0;
int j=0;
for(int i=0;i<str1.length;i++){
if(str1[i]>='0'&&str1[i]<='9')
str2[e++]=str1[i]-'0';
else if(str1[i]>='a'&&str1[i]<='z'){
str2[e++]=str1[i]-'a'+10;
}
else{
c=str1[i];
j=e;
}
}
int a=0,b=0;
for(int i=0;i<j;i++)
a=a*16+str2[i];
for(int i=j;i<e;i++)
b=b*16+str2[i];
//			System.out.println(a);
//			System.out.println(b);
if(c=='+')
a=a+b;
else
a=a-b;
e=0;
while(a!=0){
str2[e++]=a%8;
a/=8;
}
for(int i=e-1;i>=0;i--)
System.out.print(str2[i]);
System.out.println();
}
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  NYOJ java