問題描述
給定n
個十六進製制正整數,輸出它們對應的八進位制數。
輸入格式
輸入的第一行為乙個正整數n(
1<=n<=10
)。接下來
n行,每行乙個由
0~9、大寫字母
a~f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過
100000
。輸出格式
輸出n
行,每行為輸入對應的八進位制正整數。
【注意】
輸入的十六進製制數不會有前導
0,比如
012a
。輸出的八進位制數也不能有前導0。
樣例輸入
239
123abc
樣例輸出
714435274
【提示】
先將十六進製制數轉換成某進製數,再由某進製數轉換成八進位制。
思路:先轉成二進位制,再變成
6進製,由之前的
4位一起,變成
3位一起
字串的擷取函式
substr
這個方法
,有兩個輸入引數分別為起始位址和擷取的長度。
s2 = s1.substr(0,3)
自己的執行一直不通過,怎麼改都不行,如果知道為什麼錯了,請告訴我一下哈
#include#includeusing namespace std;
string chartostring(char a)
}int main()
//將16進製制轉成2進製
for(int i=0; i
另外附上100分的**
#include#include#includeint temp[410000];
char jz16[110000];
int answer[410000];
int switcha(char a)
int main()
}//乙個十六進製制變成4個二進位制順著來
memset(answer,0,sizeof(answer));
for(i=len*4-1,sum=0;i>=0;i-=3,sum++)
//三個二進位制變成乙個八進位制逆著來
for(j=i,k=0;j>i-3&&j>=0;j--,k++)
answer[sum]+=temp[j]*(int)pow(2,k);
for(i=sum;;i--)
if(answer[i]!=0)
break;
//注意不輸出前面多餘的0
for(i=i;i>=0;i--)
printf("%d",answer[i]);
printf("\n");
} return 0;
}
十六進製制轉八進位制
時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸...
十六進製制轉八進位制
資料很大 因此直接考慮用字串陣列來儲存十六進製制和八進位制 先根據 四位一體 的方法將十六進製制轉化為二進位制,而後根據 三位一體 將二進位制轉化為八進位制。include includeint main else if a i 1 else if a i 2 else if a i 3 else ...
十六進製制轉八進位制
給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出n行,每行為輸入對應的八進位制正整數。輸入 2 39123abc 輸出 71...