日期:2026年5月9日
ZeroJudge 題目連結:b982. YoJudge 預練(空間之章)
解題想法
這題我是用最直接的寫法,先找出字串 s 中 g, m, k, byte, bit, . 的索引值,再寫很多層的 if, else 判斷 s 的格式,依照格式分割字串、換算答案。
Python 程式碼
使用時間約為 14 ms,記憶體約為 8.6 MB,通過測試。
while True:
try:
s = input()
ans = 0
if "gb" in s:
i = s.find("gb")
a = int(s[:i])
ans = 8*a*10**9
elif "mb" in s:
i = s.find("mb")
a = int(s[:i])
ans = 8*a*10**6
elif "kb" in s:
i = s.find("kb")
if "." in s:
j = s.find(".")
a = int(s[:j])
b = int(s[j+1:i])
ans = 8*(a*10**3 + b*100)
else:
a = int(s[:i])
ans = 8*a*10**3
elif "byte" in s:
i = s.find("byte")
if "." in s:
j = s.find(".")
a = int(s[:j])
b = int(s[j+1:i])
ans = 8*a + b
else:
ans = 8*int(s[:i])
elif "bit" in s:
i = s.find("bit")
ans = int(s[:i])
elif "g" in s and "m" in s and "k" in s:
i = s.find("g")
j = s.find("m")
k = s.find("k")
a = int(s[:i])
b = int(s[i+1:j])
c = int(s[j+1:k])
ans = 8*(a*10**9 + b*10**6 + c*10**3)
elif "g" in s and "m" in s:
i = s.find("g")
j = s.find("m")
a = int(s[:i])
b = int(s[i+1:j])
ans = 8*(a*10**9 + b*10**6)
elif "m" in s and "k" in s:
i = s.find("m")
j = s.find("k")
a = int(s[:i])
b = int(s[i+1:j])
ans = 8*(a*10**6 + b*10**3)
print(ans)
except EOFError:
break