試題 基礎練習 十六進製制轉八進位制

2021-10-17 14:27:06 字數 1294 閱讀 9722

問題描述

給定n個十六進製制正整數,輸出它們對應的八進位制數。

輸入格式

輸入的第一行為乙個正整數n (1<=n<=10)。

接下來n行,每行乙個由09、大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。

輸出格式

輸出n行,每行為輸入對應的八進位制正整數。

【注意】

輸入的十六進製制數不會有前導0,比如012a。

輸出的八進位制數也不能有前導0。

樣例輸入239

123abc

樣例輸出

714435274

【提示】

先將十六進製制數轉換成某進製數,再由某進製數轉換成八進位制。

## 錯誤**

#include

#include

#include

using

namespace std;

intmain()

while

(s.size()

)}}

這種想法是將16進製制直接轉換成8進製,因為c中本來就可以直接表示16進製制,所以不需要將16進製制轉換成10進製。但是,這種思路是錯誤的,原因在於我們沒有考慮到題目中所給的十六進製制的範圍,這是乙個很大的範圍,int無法解決問題,long long int也沒法解決問題,會產生溢位,所以只能用別的辦法。

#include

#include

#include

#include

#include

using

namespace std;

intmain()

}if(h.length()

%3==1

)///不足三位前面應該用0補齊,方便進行計算

h="00"

+h;if

(h.length()

%3==2

) h=

"0"+h;

int bj=0;

///控制前導0的變數

for(

int i=

0;ilength()

-2;i+=3)

}printf

("\n");

}return0;

}

這是借鑑csdn其他大佬的方法,現將16進製制轉換成2進製,在轉換成8進製,這樣的做法雖然複雜,但是對於範圍沒有什麼要求。

雖然說第一種解法藍橋系統不給通過,但我覺得是一種很好的思路,很簡便,我們解決實際問題的時候可以用第一種方法直接出答案。

試題 基礎練習 十六進製制轉八進位制

試題 基礎練習 十六進製制轉八進位制 資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六...

試題 基礎練習 十六進製制轉八進位制

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格...

試題 基礎練習 十六進製制轉八進位制

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格...