問題描述
給定n個十六進製制正整數,輸出它們對應的八進位制數。
輸入格式
輸入的第一行為乙個正整數n (1<=n<=10)。
接下來n行,每行乙個由09、大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。
輸出格式
輸出n行,每行為輸入對應的八進位制正整數。
【注意】
輸入的十六進製制數不會有前導0,比如012a。
輸出的八進位制數也不能有前導0。
樣例輸入239
123abc
樣例輸出
714435274
思路:1.由於同時輸入好幾個數,所以準備兩個列表,乙個存放16進製制的數,另乙個存放8進製的數。
2.對存放16進製制的列表一一遍歷,先把數字轉化為10進製,然後再轉換為8進製,然後存放到另乙個列表中。
3.對存放8進製的列表一一遍歷,將其輸出。
while
true
:try
: n =
int(
input()
) q =
1 b =
while q<=n:
num =
input()
q = q+
1for z in b:
sum=
0 j =
1for i in z:
if i <=
str(9)
: num = i
elif i ==
'a':
num =
10elif i ==
'b':
num =
11elif i ==
'c':
num =
12elif i ==
'd':
num =
13elif i ==
'e':
num =
14elif i ==
'f':
num =
15sum
=sum
+int
(num)*(
16**
(len
(z)-j)
) j = j+
1 a =
ifsum==0
:print(0
)while
sum!=0:
k =sum%
8sum
=sum//8
a.reverse(
)for l in a:
print
(l,end='')
print()
except
:break
思路:大體方法和上面一直,只不過16進製制轉換10進製的時候用的是ord()函式
while
true
:try
: n=
int(
input()
) a =[[
]for i in
range
(n)]
b =[[
]for i in
range
(n)]
for i in
range
(n):
a[i]
=input()
for i in
range
(n):
s,m=0,
0for j in
range
(len
(a[i]))
:if a[i]
[j].isdigit():
s=s+
(ord
(a[i]
[j])
-ord
('0'))
*pow(16
,len
(a[i]
)-j-1)
elif a[i]
[j].isalpha():
s=s+
(ord
(a[i]
[j])
-ord
('a')+
10)*pow(16
,len
(a[i]
)-j-1)
while s:
m=s%
8 b[i]
s=int(s/8)
for i in
range
(n):
for j in
range
(len
(b[i]))
:print
(b[i]
[len
(b[i]
)-j-1]
,end="")
print()
except
:break
藍橋杯 基礎練習
basic 1 閏年判斷 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 年份是4的倍數而不是100的倍數 年份是400的倍數。include using namespace std intmain basic 2 01字串 對於長度為5位的乙個01串,每一位都可能是0或1,...
藍橋杯 基礎練習
模擬。include using namespace std intmain 五重迴圈列舉或dfs均可。include using namespace std string s 00000 void dfs int dep s dep 0 dfs dep 1 s dep 1 dfs dep 1 in...
藍橋杯 基礎練習 時間轉換 Python
問題描述 給定乙個以秒為單位的時間t,要求用 h m s 的格式來表示這個時間。h 表示時間,m 表示分鐘,而 s 表示秒,它們都是整數且沒有前導的 0 例如,若t 0,則應輸出是 0 0 0 若t 3661,則輸出 1 1 1 輸入格式 輸入只有一行,是乙個整數t 0 t 86399 輸出格式 輸...