題解:
這個題目算是發現了我在位運算上的知識缺陷。
先說一下涉及到位運算進製轉換上的一些知識點:
如果一定要去說原理的話,那就是
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行,每行...