2016-2017学年第三次测试赛 习题E 林喵喵算术

时间限制: 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
 
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;
}
很顺利的一题
原文地址:https://www.cnblogs.com/William-xh/p/7144099.html