a248: 新手训练~数组应用
这篇教学会示范 ZeroJudge 基础题库“a248: 新手训练 ~ 数组应用”的解题过程。
题目需求
题目会提供 a、b、c 三个数字,使用 a 除以 b 后,输出小数点后有 c 位数的数字,例如“15724 19169 10”输出“0.8202827481”、“10 5 3”输出“2.000”。
题目链接:a248: 新手训练 ~ 数组应用
解答
由于程序里“小数字数”有上限,超过上限会以 0 呈现,因此不能直接用数字相除来求得答案 ( 结果会发生错误 ),所以必须先将数字乘以“10^位数”,让结果变成“整数”,将整数换成字串,使用拆分字串的方式求得最后的答案。
while True:
try:
a, b, c = map(int, input().split(' ')) # 將題目給予的字串拆分成 a、b、c 三個數字
rd = a*(10**c)//b # 乘以 10^位數 後除以 b 求整數
rs = str(rd) # 將整數轉成字串
if len(rs) < c: # 如果字串的長度不足位數
for i in range(c - len(rs)):
rs = '0' + rs # 將字串前方補 0
m = rs[(c*-1):] # 根據位數拆分字串 ( 小數點後段 )
n = rs[:(c*-1)] # 根據位數拆分字串 ( 小數點前段 )
if n == '': n = '0' # 如果前段為空字串,就補 0
print(f'{n}.{m}') # 加上小數點,印出結果
except:
break
微信扫码关注
抖音扫码关注