AtCoder ABC 133 B – Good Distance Python解説

スポンサーリンク

Good Distance

今回の問題はこちら「Good Distance」。各点間の距離を求め、距離が整数となるかを判定していきます。点と点の距離の求め方が難しい問題です。

n, d = map(int, input().split())

cnt = 0

x = []

for _ in range(n):
    x.append(list(map(int, input().split())))

for i in range(n - 1):
    for j in range(i+1, n):
        dist = 0
        for k in range(d):
            dist += (x[i][k] - x[j][k]) ** 2
        if dist ** 0.5 == int(dist ** 0.5):
            cnt += 1
            
print(cnt)

3重ループにすることですべての点と点の距離を求めることができます。上記コードでは、点の距離を変数distに加えていきます。そしてdistの平方根とdistの平方根をintで丸めたものを使って整数判定しています。distの平方根とdistの平方根をintで丸めたものの値が一緒ならcnt+1にしていけば大丈夫です。