16進製制轉2進製再轉8進製

2022-06-29 16:03:16 字數 747 閱讀 6363

藍橋杯刷題計畫,由於最大有十萬位16進製制數,所以直接選擇整形是無法儲存的,考慮到16進製制,8進製,2進製之間的關係,所以我們選擇,先轉2進製,再有2進製轉換為8進製。

由於,一位16進製制數對應4位2進製數,一位8進製數對應3位2進製數,於是,我們可以用先用map進行乙個對映儲存,便於直接取用。

另外注意map迭代器的使用方法,還有乙個坑點在於如果16進製制數轉換為2進製字串後,不是3的倍數,我們需要從高位開始,挨著補0。

注意字串可以使用push_back操作,但一次放入乙個字元,採取字串+=的方法,時間會比較複雜。

最後,直接上**:

#include using

namespace

std;

typedef

long

long

ll;map

mp;mapmp2;

intmain()

}while(ans.size() % 3) ans = "

0" +ans;

for(map::iterator it = mp.begin(); it != mp.end(); it++)

for(int i = 0; i < ans.size(); i += 3

)

for(int i = 0, flag = 0; i < end.size(); i++)

cout

<}

return0;

}

16進製制轉8進製

很有意思。開始沒注意題直接 x o 然後看到了 這個16進製制的數長度不超過100000 妥妥又是高精度問題。還有個錯誤就是把二進位制左右反了,導致半天找不出錯。然後就把二進位制打出來,找到了。大體思路就是16 2 8 如 f 1111 17 ff 1111 1111 011 111 111 377...

16進製制轉8進製

16進製制轉8進製 思路 16進製制轉成2進製串,2進製串從後每3位轉成8進製串 include include define maxn 10 define maxlength 100000 int main else bi k 0 if temp 4 else bi k 0 if temp 2 e...

10進製轉2進製和16進製制

看到論壇說面試遇到,就嘗試寫 public class test public static string tobinary int n return temp.reverse tostring 10進製轉16進製制 將給定的十進位制整數除以基數16,餘數便是等值的16進製制的最低位。將上一步的商再...