#--------- 入力例1 ---------- n = 1# ボールの個数 h = 10# ボールの高さ(メートル) r = 10# 半径(メートル) t = 100# 経過時間(秒) #--------- 入力例2 ---------- # n = 2 # ボールの個数 # h = 10 # ボールの高さ(メートル) # r = 10 # 半径(メートル) # t = 100 # 経過時間(秒) #---------------------------- import math g = 10.0# 重加速度
# 時刻 T でのボールの位置 defcalc(t): if t < 0: return h t1 = math.sqrt(2 * h / g) k = int(t / t1) if k % 2 == 0: d = t - k * t1 return h - g * d * d / 2 else: d = k * t1 + t1 - t return h - g * d * d / 2
# 各ボールごとの最終位置を算出する lst = [calc(t - i) for i inrange(n)]
for x insorted(lst): print('{:.2f}'.format(x), end=' ') print()
# 上下左右への移動を試す for dx, dy in [(1, 0), (-1, 0), (0, 1), (0, -1)]: x, y = qx + dx, qy + dy # 配列外の参照の場合 if x < 0or x >= h or y < 0or y >= w: continue # 白マスの場合 かつ マス(x, y)が未探索の場合 if s[x][y] == '.'and dist[x][y] < 0: # マス(x, y)をキューに追加して、最短経路長を更新 que.put((x, y)) dist[x][y] = dist[qx][qy] + 1
# 白マスの数をカウント cnt_white = sum(line.count('.') for line in s)