結果
| 問題 | No.132 点と平面との距離 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2021-07-28 21:03:59 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 415 ms / 5,000 ms | 
| コード長 | 753 bytes | 
| コンパイル時間 | 458 ms | 
| コンパイル使用メモリ | 82,584 KB | 
| 実行使用メモリ | 76,992 KB | 
| 最終ジャッジ日時 | 2024-09-13 17:42:51 | 
| 合計ジャッジ時間 | 1,505 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 3 | 
ソースコード
# 点と平面の距離
N =  int(input())
P = tuple(map(lambda x:float(x),input().split()))
lsXYZ = [tuple(map(lambda x:float(x),input().split())) for i in range(N)]
def point_to_plane(A,B,C):
    AB = (B[0]-A[0],B[1]-A[1],B[2]-A[2])
    AC = (C[0]-A[0],C[1]-A[1],C[2]-A[2])
    outer = (AB[1]*AC[2]-AB[2]*AC[1],AB[2]*AC[0]-AB[0]*AC[2],AB[0]*AC[1]-AB[1]*AC[0])
    return outer[0],outer[1],outer[2],-outer[0]*A[0]-outer[1]*A[1]-outer[2]*A[2]
def dist_point_plane(P,a,b,c,d):
    return abs(a*P[0]+b*P[1]+c*P[2]+d)/((a**2+b**2+c**2)**(1/2))
ans = 0
for i in range(N-2):
    for j in range(i+1,N-1):
        for k in range(j+1,N):
            a,b,c,d = point_to_plane(lsXYZ[i],lsXYZ[j],lsXYZ[k])
            ans += dist_point_plane(P,a,b,c,d)
print(ans)
            
            
            
        