基礎練習 十六進製制轉八進位制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
給定n個十六進製制正整數,輸出它們對應的八進位制數。
輸入格式
輸入的第一行為乙個正整數n (1<=n<=10)。
接下來n行,每行乙個由0~9、大寫字母a~f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。
輸出格式
輸出n行,每行為輸入對應的八進位制正整數。
【注意】
輸入的十六進製制數不會有前導0,比如012a。
輸出的八進位制數也不能有前導0。
樣例輸入2
39
123abc
樣例輸出
71
4435274
【提示】
先將十六進製制數轉換成某進製數,再由某進製數轉換成八進位制。
#include
#include
using namespace std;
char s[100010];
bool b[400040];
int a[400001];
int main()
if(s[i]=='1')
if(s[i]=='2')
if(s[i]=='3')
if(s[i]=='4')
if(s[i]=='5')
if(s[i]=='6')
if(s[i]=='7')
if(s[i]=='8')
if(s[i]=='9')
if(s[i]=='a')
if(s[i]=='b')
if(s[i]=='c')
if(s[i]=='d')
if(s[i]=='e')
if(s[i]=='f')
t-=4;
}t=4*length;
int p=0;
while(!b[t])
for(int i=1;i<=t;i+=3)
for(int i=p;i>=1;i--)
coutreturn 0;
} 舉例:
輸入:123abc
分析過程:
1 2 3 a b c
陣列s: 0001 0010 0011 1010 1011 1100(這裡
s的下標是從
0開始的)
length=6;
t=24;
陣列b: 0001 0010 0011 1010 1011 1100(注意:這裡
b的下表是從
24開始的)
t= 24
執行完第乙個迴圈後 t變為了0
執行t=4*length;--à t=24;
執行while(!b[t]) ---->t=21;
執行第二個迴圈 陣列a中存入資料
然後逆序輸出 4435274
基礎練習 十六進製制轉八進
問題描述 給定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行,每行為輸入對應的八進位制正整數。注意 輸...