結果

問題 No.132 点と平面との距離
ユーザー Navier_BoltzmannNavier_Boltzmann
提出日時 2023-04-01 15:08:04
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 205 ms / 5,000 ms
コード長 881 bytes
コンパイル時間 203 ms
コンパイル使用メモリ 82,460 KB
実行使用メモリ 77,236 KB
最終ジャッジ日時 2024-09-24 11:04:19
合計ジャッジ時間 1,080 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 77 ms
76,760 KB
testcase_01 AC 111 ms
76,956 KB
testcase_02 AC 205 ms
77,236 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import *
from itertools import *
from functools import *
from heapq import *
import sys,math
input = sys.stdin.readline

N = int(input())
px,py,pz = map(float,input().split())
X = [tuple(map(float,input().split())) for _ in range(N)]
ans = 0

def plane(A,B,C):
    
    #三次元上の点A,B,Cを通る平面ax+by+cz+d=0を求める
    # return (a,b,c,d)
    
    ax,ay,az = A
    bx,by,bz = B 
    cx,cy,cz = C
    a = (by-ay)*(cz-az) - (cy-ay)*(bz-az)
    b = (bz-az)*(cx-ax) - (cz-az)*(bx-ax)
    c = (bx-ax)*(cy-ay) - (cx-ax)*(by-ay)
    d = -(a*ax+b*ay+c*az)   
    return (a,b,c,d)
    
    
for i in range(N-2):
    xi = X[i]
    for j in range(i+1,N-1):
        xj = X[j] 
        for k in range(j+1,N):
            xk = X[k]
            a,b,c,d = plane(xi,xj,xk)
            ans += abs(a*px+b*py+c*pz+d)/math.sqrt(a**2+b**2+c**2)
print(ans)
            
0