南阳oj-244-16进制的简单运算
2015-03-08 10:49
211 查看
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 本想拿这道题练一下进制转换的,看完最优代码才知道c语言有直接的十六进制,八进制占位符 我的代码
#include <iostream> #include <cstdio> using namespace std; int hd(char c) { if(c >= 'a') return c-'a'+10; else return c-'0'; } int main() { int n; char c; scanf("%d",&n); getchar(); while(n--) { int a = 0, b = 0, d = 0,sign = -1; while(1) { //a进制转10进制的核心就是d=x*a^n+y*a^n-1+………………+z*a^0 scanf("%c",&c); if(c == '+' || c =='-') break; a = a*16 + hd(c); } if(c == '+') sign = 1; else sign = 0; while(1) { scanf("%c",&c); if(c == '\n') break; b = b*16 + hd(c); } if(sign) d = a + b; else d = a - b; printf("%o\n",d); } }
最优代码:
01.#include<stdio.h> 02.int main() 03.{ 04.int T; 05.scanf("%d",&T); 06.while(T--) 07.{ 08.int a,b,d; 09.char c; 10.scanf("%x%c%x",&a,&c,&b); 11.if(c=='+') d=a+b; 12.else d=a-b; 13.if(d>=0) 14.printf("%o\n",d); 15.else printf("-%o\n",-d); 16.} 17.}
相关文章推荐
- 16进制的简单运算(南阳oj244)
- NYOJ题目244---16进制的简单运算
- nyoj244 16进制的简单运算
- NYoj 244 16进制的简单运算&&printf输出八进制十六进制
- nyoj244 16进制的简单运算
- nyoj 题目244 16进制的简单运算
- 题目244-16进制的简单运算
- nyoj 244 16进制简单运算
- NYOJ 244 16进制的简单运算
- NYOJ-244-16进制的简单运算-2013年10月17日17:19:41
- NYOJ-244-16进制的简单运算
- 244 16进制的简单运算
- NYOJ 244题 16进制的简单运算
- NYOJ 244 16进制的简单运算
- NYOJ244 16进制的简单运算
- 题目244 16进制的简单运算
- NYOJ:244 16进制的简单运算(c语言基础)
- nyoj-244-16进制简单运算
- 16进制的简单运算http://acm.nyist.net/JudgeOnline/problem.php?pid=244
- 南阳 oj 16进制的简单运算 题目244 语言入门