藍橋杯 基礎練習 十六進製制轉八進位制

2021-07-29 21:05:34 字數 1346 閱讀 4670

時間限制:1.0s   記憶體限制:512.0mb

問題描述

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

輸入格式

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

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

輸出格式

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

【注意

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

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

樣例輸入239

123abc

樣例輸出

714435274

提示

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

----------------------------------------------

題目限定的十六進製制數有100000位,long long 也是放不下的,

所以用string儲存,先轉換成二進位制,再轉換成八進位制

#include#include#include#include#includeusing namespace std;

string a,b;

int main()

} len=b.length();

if(len%3==1) b+="00"; //這裡參考了大神的做法,把b用0補齊,後面處理方便很多

else if(len%3==2) b+="0";

len=b.length();

bool flag=false;

for(int j=len-1;j>0;j-=3) //b是倒序儲存的,所以這裡倒序輸出

{ v=4*(b[j]-'0')+2*(b[j-1]-'0')+(b[j-2]-'0');

if(v) flag=true; //跳過開頭的0

if(flag) cout<

下面的**雖然寫起來麻煩,但是執行起來更簡潔高效

#include#include#include#include#includeusing namespace std;

string a,b;

int main()

{ int n,v;

cin>>n;

for(int i=0;i>a;

b="";

int len=a.length();

for(int l=0;l

基礎練習 十六進製制轉八進

問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸入的十六進製制數不會有前導0,比如012a。樣例...

藍橋杯練習 基礎練習 十六進製制轉八進位制

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

藍橋杯 基礎練習 十六進製制轉八進位制

問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進位制正整數。注意 輸...