http://acm.nyist.net/JudgeOnline/problem.php?pid=244
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
-
第一行输入一个正整数T(0<T<100000)
这题自己想了一下还准备一位一位算,有考虑了符号该怎么办。结果看了最优解,觉得自己还是太菜了,想想题目难度是1,也不会太难。继续努力吧。
这题用%x和%o就行了。做了这题要学到点东西
(1)要对各种进制重视起来,不光是二进制和十进制
(2)输入时如果两个数连着,但中间有符号,计算机也会看成两个数输入,如123+456,可以写成printf("%d %d",a,b);,没问题。
#include<stdio.h>
int main()
{
int N,a,b;
scanf("%d",&N);
while(N--)
{
scanf("%x %x",&a,&b);
//printf("%x %x\n",a,b);
printf("%o\n",a+b);
}
return 0;
}