아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

반딧불이 무리의 질량 중심

시간 제한5초메모리 제한512 MB

요약
각 반딧불이가 일정한 속도로 직선 운동할 때, 원점에서 무게중심까지의 거리가 t >= 0 범위에서 최소가 되는 값과 그 최초 시각을 구해 소수점 여덟 자리까지 정확히 출력한다.
난이도

보통10점 중 6점

유형
수학, 기하, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

반딧불이 NN마리로 이루어진 무리를 관찰한다. 반딧불이는 저마다 일정한 속도로 직선을 따라 움직인다. 나는 공간의 원점 (0,0,0)(0, 0, 0)에 서 있다. 반딧불이의 질량은 모두 같고, 무리의 중심이 나에게 얼마나 가까이 오는지 알고 싶다.

시각 t=0t = 0에서 반딧불이 각각의 위치와 속도를 알고 있으며, t≥0t \ge 0인 시각만 생각한다. 속도는 변하지 않고, 반딧불이는 다른 반딧불이와 나를 포함해 무엇이든 그대로 통과한다. 시각 tt에서 반딧불이 NN마리의 질량 중심을 M(t)M(t), 원점과 M(t)M(t) 사이의 거리를 d(t)d(t)라고 하자. t≥0t \ge 0에서 d(t)d(t)의 최솟값 dmin⁡d_{\min}과, d(t)=dmin⁡d(t) = d_{\min}이 되는 가장 이른 시각 tmin⁡t_{\min}을 구한다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 반딧불이의 수 NN이 주어지고, 이어서 다음 형식의 줄이 NN개 주어진다.

x y z vx vy vz

각 줄은 반딧불이 한 마리를 나타낸다. (x,y,z)(x, y, z)는 시각 t=0t = 0에서의 위치이고, (vx,vy,vz)(v_x, v_y, v_z)는 속도이다.

제한

  • 입력에 주어지는 수는 모두 정수이다.
  • 1≤T≤1001 \le T \le 100
  • 3≤N≤5003 \le N \le 500
  • −5000≤x,y,z,vx,vy,vz≤5000-5000 \le x, y, z, v_x, v_y, v_z \le 5000

출력

각 테스트 케이스마다 다음 형식으로 한 줄씩 출력한다.

Case #X: dmin tmin

XX는 1부터 시작하는 테스트 케이스 번호이다. dmin⁡d_{\min}을 먼저 쓰고 공백 한 칸을 둔 다음 tmin⁡t_{\min}을 쓴다. 두 값 모두 소수점 아래 여덟 자리까지 반올림해 여덟 자리를 빠짐없이 출력하고, 정확히 절반인 값은 올린다. 반올림 결과가 정확해야 하는데 tmin⁡t_{\min}은 10610^6보다 커질 수 있으므로, 배정밀도 부동소수점만 쓰면 자릿수가 모자랄 수 있다.

힌트

NN개의 점 (xi,yi,zi)(x_i, y_i, z_i)의 질량 중심은 다음 점 (xc,yc,zc)(x_c, y_c, z_c)이다.

xc = (x1 + x2 + ... + xN) / N
yc = (y1 + y2 + ... + yN) / N
zc = (z1 + z2 + ... + zN) / N

예제2

  1. 예제 1

    입력
    3
    3
    3 0 -4 0 0 3
    -3 -2 -1 3 0 0
    -3 -1 2 0 3 0
    3
    -5 0 0 1 0 0
    -7 0 0 1 0 0
    -6 3 0 1 0 0
    4
    1 2 3 1 2 3
    3 2 1 3 2 1
    1 0 0 0 0 -1
    0 10 0 0 -10 -1
    
    예상 출력
    Case #1: 0.00000000 1.00000000
    Case #2: 1.00000000 6.00000000
    Case #3: 3.36340601 1.00000000
    
  2. 예제 2

    입력
    1
    3
    1 1 1 1 1 1
    2 2 2 2 2 2
    3 3 3 0 0 0
    
    예상 출력
    Case #1: 3.46410162 0.00000000