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(); } } }
相关文章推荐
- nyoj244 16进制的简单运算
- NYOJ-244-16进制的简单运算
- nyoj244 16进制的简单运算
- NYOJ 244题 16进制的简单运算
- nyoj244 16进制的简单运算
- nyoj244 16进制的简单运算
- NYOJ题目244---16进制的简单运算
- NYOJ244 16进制的简单运算
- NYOJ:244 16进制的简单运算(c语言基础)
- nyoj 题目244 16进制的简单运算
- NYOJ 244 16进制的简单运算
- nyoj——244 16进制的简单运算
- NYoj 244 16进制的简单运算&&printf输出八进制十六进制
- NYOJ-244 16进制的简单运算
- nyoj-244-16进制简单运算
- nyoj 244 16进制简单运算
- NYOJ-244-16进制的简单运算-2013年10月17日17:19:41
- nyoj 16进制的简单运算
- 题目244-16进制的简单运算
- NYOJ-244 16进制的简单运算 AC 分类: NYOJ 2014-01-17 21:11 195人阅读 评论(0) 收藏