#29037: Python 解題報告和解答


s913047@gm.hccvs.hc.edu.tw (6Kyd5ZKP6L6w)

學校 : 不指定學校
編號 : 177036
來源 : [140.126.179.101]
最後登入時間 :
2022-04-27 09:12:55
g503. 109北二6.一元多項式計算機 -- 109北二區桃竹苗資訊學科能力複賽 | From: [1.169.152.84] | 發表日期 : 2022-01-24 17:27

參考https://zerojudge.tw/ShowThread?postid=27763&reply=27745#27763

以下是我對這題的假設:

因為一些程式語言像C++有位數限制,所以這題不是要求正確答案,而是每次運算的數字都只取字串後 m 位來運算 (不包含次方B),而每次運算完後也只取字串後 m 位用來下次的運算

 

以下是Python解答:

#轉字串後取後 m 位
def Say_Good_Bye(value):
  ctr = -1 if value<0 else 1
  value = [i for i in str(abs(value))]
  value = "0"*(limit-len(value))+"".join(value) if len(value)<=limit else "".join(value[len(value)-limit:len(value)])
  return int(value)*ctr
inf = [int(i) for i in input().split()]
limit = inf[2]
result = 0
c = 1
while c<=inf[0] :
  var = [int(i) for i in input().split()]
  result += Say_Good_Bye(Say_Good_Bye(var[0])*(Say_Good_Bye(inf[1])**var[1]))
  result = Say_Good_Bye(result)
  c += 1
result = [i for i in str(abs(result))]
print"0"*(limit-len(result))+"".join(result) if len(result)<=limit else "".join(value[len(result)-limit:len(result)]) )
 
ZeroJudge Forum