【玲珑学院 1056 1056 - A plus B】+ 八进制

该博客介绍了一道编程题目,要求在八进制数下计算a加b的结果。题目中给出了时间限制和内存限制,并提供了样例输入和输出。解决方法包括将八进制转换为10进制进行计算,再转回八进制表示。
摘要由CSDN通过智能技术生成

1056 - A plus B

Time Limit:1s Memory Limit:64MByte

Submissions:841Solved:197
DESCRIPTION

Two octal number integers a, b are given, and you need calculate the result a - b in octal notation.
If the result is negative, you should use the negative sign instead of complement notation.

INPUT
The first line is an integer T(1 <= T <= 1000), indicating the number of test cases.
For each case, the first and only line contains two octal integers a, b.
(0 <= a, b < 2^32)
OUTPUT
Print the result, one per line, in octal notation.
SAMPLE INPUT
1
76 7
SAMPLE OUTPUT
67

自己把八进制转换成 10 进制算最后再转换回去~~大佬们都用8进制直接过~~

#include<cstdio>
typedef long long LL;
LL so(LL x){
    LL cut = 0,sum = 1;
    while(x){
        LL a = x % 10;
        x /= 10;
        cut += sum * a;
        sum *= 8;
    }
    return cut;
}
LL co(LL x){
    LL cut = 0,sum = 1;
    while(x){
        LL a = x % 8;
        x /= 8;
        cut += sum * a;
        sum *= 10;
    }
    return cut;
}
int main()
{
    LL T,a,b;
    scanf("%lld",&T);
    while(T--){
        scanf("%lld %lld",&a,&b);
        if(a >= b)
            printf("%lld\n",co(so(a) - so(b)));
        else
            printf("-%lld\n",co(so(b) - so(a)));
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值