【ABC187 B】「Gentle Pairs」を解く【Python3】

「AtCoder」解説一覧へ

x座標が互いに異なるN個の点のうち、2つの点を通る直線の傾きが「-1以上1以下である」ものの組がいくつあるか求める問題です。

提出
n = int(input())
xy=[list(map(int,input().split())) for _ in range(n)]

ans = 0

for i in range(n-1):
    xi, yi = xy[i]
    for j in range(i+1,n):
        xj, yj = xy[j]
        a = (yj-yi)/(xj-xi)
        if -1 <= a <= 1:
            ans += 1

print(ans)

傾きを求める問題なので、すべてのパターンの傾きを調べ、傾きが-1以上1以下であれば、「ans」に1を足します。

最後にansを出力します。

今回、「x座標が互いに異なる」という条件だったので問題ないですが、x座標が等しい場合、傾き計算で0で割ることになり、エラーが発生するため、工夫が必要になります。

【ABC187】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です