問題
C – 浮気調査
ループの else
節
Python では、ループに else
節を設定することができ、「ループでbreakしなかったときにこの処理を行う」という処理を、フラグ変数を使わずに行えます。
4.4. break
文と continue
文とループの else
節
小数演算による誤差
小数演算で比較を行う際には、誤差で誤る可能性があるので注意が必要。
回答
import sys txa, tya, txb, tyb, T, V = map(int, input().split()) n = int(input()) lst_pos_girl = [list(map(int, input().split())) for _ in range(n)] # スライドより誤差対策 eps = sys.float_info.epsilon MAX_DIST = T * V + eps pos_t_start = [txa, tya] pos_t_goal = [txb, tyb] def distance(a, b): ''' a, bの距離を求める。 ''' x_a, y_a = (a[0], a[1]) x_b, y_b = (b[0], b[1]) distance = ((x_b - x_a)**2 + (y_b - y_a)**2) ** (1/2) return distance for pos_girl in lst_pos_girl: dist_start_to_girl = distance(pos_t_start, pos_girl) dist_girl_to_goal = distance(pos_girl, pos_t_goal) if MAX_DIST >= dist_start_to_girl + dist_girl_to_goal: print('YES') break else: print('NO')