paizaの新・Bランクレベルアップメニューの問題に
【シミュレーション 4】位置情報システム(Bランク相当)
※スキルチェックの問題ではありません
という問題があるのですが、何度やっても正解しません。
(最初の2個しかテストケースが通らない)
考察漏れ、間違い等指摘していただけると幸いです。
問題のURL
該当のソースコード
Python
1from math import floor 2li = [[*map(int,input().split())]for _ in"_"*int(input())] 3t = 0 4px,py=li[0][2],li[0][1] 5for x in range(101): 6 print(floor(py), floor(px)) 7 if x == li[t][0]: 8 py = li[t][1] 9 px = li[t][2] 10 if t < len(li)-1: t += 1 11 tm = li[t][0] - li[t-1][0] 12 py += (li[t][1] - li[t-1][1]) / tm 13 px += (li[t][2] - li[t-1][2]) / tm
試したこと
小数点以下切り捨てと問題文に記載されていたため、mathモジュールをimportしてfloor関数を利用してみました。(結果は失敗)
int()を使用しても、math.trunc()を使用しても失敗しました。
補足情報(FW/ツールのバージョンなど)
Python 3.8.10
> ただし、座標が小数になる場合は小数点以下を切り捨てる。
座標値を表示するときにだけ floor を実行していて、累積値の計算は float 型数値での計算になっています。
py += (li[t][1] - li[t-1][1]) / tm
px += (li[t][2] - li[t-1][2]) / tm
小数点以下の切り捨ては毎回行う必要があるのではないでしょうか。(右辺値を切り捨てで整数値にする)

回答1件
あなたの回答
tips
プレビュー