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にしていけば大丈夫です。