ABC133-B - Good Distance を解く
ABC133-B - Good Distance
D次元空間上に N個の点がある
i 番目の点と j 番目の点の距離が整数となるような組み合わせは
いくつあるかを求める( i < j )
2点間の距離を求める公式は与えられているのでそれを利用する
N の制約は 2 <= N <= 10 とかなり小さいので
組み合わせを全通り試せばいい
このとき、ダブルカウントしないように注意する必要がある
整数であることの確認については色んな方法があるが
今回は以下のようにキャストによる小数点以下の切り捨てと
等号演算子を利用して行う
# 整数の場合 >>> a=1.0 >>> b=int(a) >>> >>> a==b True # 整数でない場合 >>> a=1.1 >>> b=int(a) >>> >>> a==b False
以上を踏まえて書いたコードを以下に示す
提出したコード
import math # 入力 N,D=map(int,input().split()) l=[] for i in range(N): l.append(list(map(int,input().split()))) c=0 for i in range(N): for j in range(i+1,N): # 距離の計算 a=0 for k in range(D): a+=pow(l[i][k]-l[j][k],2) a=math.sqrt(a) # 整数の判定 b=int(a) if a==b: c+=1 # 出力 print(c)
提出結果はACでした