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
- 思路:一開始想到的是字符串解決,敲代碼會發現很麻煩,然而本題難度才只是1,事出反常必有妖,轉換思路用十六進制和八進制的輸入輸出。
- AC代碼:
#include<stdio.h> #include<iostream> using namespace std; #define ll long long int main() { int t; scanf("%d",&t); while(t--) { int a,b; char c; scanf("%x%c%x",&a,&c,&b); if(c=='-') printf("%o\n",a-b); else printf("%o\n",a+b); } return 0; }