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;
}