藍橋杯練習 Basic 12 16進製制轉8

2021-10-24 09:07:46 字數 1018 閱讀 7840

題解:

這個題目算是發現了我在位運算上的知識缺陷。

先說一下涉及到位運算進製轉換上的一些知識點:

如果一定要去說原理的話,那就是

2 3=

8;24

=16

2 ^ 3 = 8;2 ^ 4 = 16

23=8;2

4=16

就這麼簡單的原理

回到題目本身上來,這個題目最終是需要轉換成8進製,我們顯然是需要做乙個架橋。那麼這個架橋肯定不能是10進製,因為100000位的16進製制早就爆了,但是我們參考剛才的分析,我們可以把16進製制先轉換成2進製,再按位轉換成8進製,這樣我們操作的資料最大就是2進製下的資料長度,也就是4e6,這個資料對於計算機就是相當小的了。

#include

#include

#include

#include

#include

#include

using

namespace std;

map<

char

,string> mp1;

map<

int,string> mp2;

void

init()

intmain()

eight +

= mp2[temp]

;//注意這裡存的八進位制資料其實是反過來的

}int len3 = eight.

length()

-1;while

(len3 >=

0&& eight[len3]

=='0'

) len3--

;//去除前導零

for(

int i = len3;i >=

0;i--

) cout << eight[i]

; cout << endl;

}return0;

}

藍橋杯基礎練習basic 2

問題描述 利用字母可以組成一些美麗的圖形,下面給出了乙個例子 abcdefg babcdef cbabcde dcbabcd edcbabc 這是乙個5行7列的圖形,請找出這個圖形的規律,並輸出乙個n行m列的圖形。輸入格式 輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。輸出格式 ...

藍橋杯練習 BASIC 13 數列排序

問題描述 給定乙個長度為n的數列,將這個數列按從小到大的順序排列。1 n 200 輸入格式 第一行為乙個整數n。第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。輸出格式 輸出一行,按從小到大的順序輸出排序後的數列。樣例輸入 58 3 6 4 9 樣例輸出 3 4 6 8 9 inc...

藍橋杯 BASIC 17 基礎練習 矩陣乘法

問題描述 給定乙個n階矩陣a,輸出a的m次冪 m是非負整數 例如 a 1 23 4 a的2次冪 7 10 15 22 輸入格式 第一行是乙個正整數n m 1 n 30,0 m 5 表示矩陣a的階數和要求的冪數 接下來n行,每行n個絕對值不超過10的非負整數,描述矩陣a的值 輸出格式 輸出共n行,每行...