时间限制: 1 Sec 内存限制: 128 MB
提交: 70 解决: 25
提交统计讨论版
题目描述
给你两个八进制数,你需要在八进制计数法的情况下计算a-b。
如果结果为负数,你应该使用负号代替补码。
输入
输入的第一个数字为T,表式测试的样例的组数(1 <= T <= 1000)。
每组数据包括两个八进制数a,b.
输出
输出计算结果,同样八进制表示。如果结果为负数,你应该使用负号代替补码。
样例输入
2
176 7
4 14
样例输出
167
-10
思路:水题,很简单,就是C++简单的八进制的读入和输出,参考杭电的1720题目http://www.cnblogs.com/William-xh/p/6798518.html
将十六进制转换为十进特例:
AB转换为dec;
0xAB
= 0x0A * 16 + 0x0B
= 10 * 16 + 11
= 171
= 0x0A * 16 + 0x0B
= 10 * 16 + 11
= 171
c 输入十六进制和八进制方法:
scanf(“%x %x”,&a,&b);
scanf(“%o %o”,&a,&b);
c++ 方法:
cin>>hex>>a>>b;
cin>>oct>>a>>b;
然后是负数的话就先判断大小,然后再大减小的再来个"-"号;完美AC
然后附上代码:
#include <iostream> #include<math.h> #include <iomanip> #include<cstdio> #include<string> #include<map> #include<vector> #include<list> #include<algorithm> #include<stdlib.h> #include<iterator> #include<sstream> #include<string.h> #include<stdio.h> using namespace std; int main() { int n; cin>>n; int a,b; while(n--) { cin>>oct>>a>>b; if(a<b) { cout<<"-"<<oct<<b-a<<endl; } else { cout<<oct<<a-b<<endl; } } return 0; }
很顺利的一题