항공우주 및 기계공학
시간 제한1초메모리 제한128 MB
각 단의 질량, 연소 시간, 추력을 받아 로켓의 수직 운동을 계산하고, 마지막 단이 떨어질 때의 높이를 소수점 둘째 자리까지 구한다.
문제
항공우주 엔지니어는 하늘을 나는 것을 만드는 일을 좋아합니다. 비행기, 로켓 등을 만들지요. 로켓을 만들어 발사했다면, 자연스럽게 이런 질문이 떠오릅니다. 이 로켓은 다시 떨어지기 전까지 얼마나 높이 올라갈까요?
다음과 같은 모델을 생각합니다. 로켓은 개의 단(stage)으로 이루어져 있고, 각 단은 본질적으로 연료 탱크입니다. 한 단은 정해진 시간 동안 연소하며, 연료가 다 떨어지면 (빈 탱크는) 분리되어 버려집니다. 그래서 로켓은 단을 하나씩 떨궈 낼수록 점점 가벼워집니다. 마지막 단이 분리되고 나면 로켓은 더 이상 가속할 수 없습니다. 로켓의 본체 자체는 킬로그램(kg)의 무게를 가지며, 이는 모든 단을 떨궈 낸 뒤에 남는 무게입니다.
각 단 에 대해 다음 세 값이 주어집니다.
- 무게 (kg),
- 연소가 지속되는 시간 (초, s),
- 연소하는 동안 만들어 내는 일정한 추력(힘) (단위는 kg·m/s², 여기서 m은 미터를 뜻합니다).
연료 자체의 무게는 없다고 가정합니다. 따라서 단 가 연소하는 동안 전체 질량은 일정하며, 그 값은 에 아직 분리되지 않은 모든 단(단 )의 무게를 더한 것과 같습니다. 로켓은 수직 위로 곧게 발사되며, 바람·마찰·고도에 따른 중력 약화 등의 효과는 모두 무시합니다. 로켓은 높이 에서 정지 상태(속도 m/s)로 시작하고, 각 단은 의 순서대로 사용되고 분리됩니다.
필요한 물리 공식은 다음과 같습니다.
- — 질량 인 물체가 힘 를 받으면 가속도는 입니다.
- 지구 중력장에서 모든 물체는 일정한 m/s²의 크기로 아래로 가속됩니다.
- 속도 로 출발해 가속도 로 움직이는 물체는 초 동안 거리 만큼 이동하고, 그 뒤의 속도는 가 됩니다.
즉 단 가 연소하는 동안 위쪽 방향의 알짜 가속도는 이며 초 동안 적용됩니다. 연소가 끝나면 단 가 분리되어 질량이 만큼 줄어듭니다.
마지막 단이 떨어져 나가는 순간의 로켓 높이를 구하세요. 입력은 항상 로켓이 이륙하고, 마지막 단이 분리되기 전에 지면으로 추락하지 않도록 주어집니다.
입력
첫 번째 줄에는 파일에 담긴 데이터 집합의 개수 이 주어집니다. 그 뒤로 다음 형식의 데이터 집합이 개 이어집니다.
- 첫 줄에는 단의 개수 ()과 로켓 본체의 무게 이 주어집니다. 은 보다 엄격히 큰 실수입니다.
- 이어서 개의 줄이 주어지며, 각 줄에는 한 단을 나타내는 음이 아닌 실수 세 개 가 있습니다. 따라서 로켓의 초기 전체 무게는 입니다.
출력
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 는 데이터 집합의 번호이며 부터 셉니다. 그런 다음 다음 줄에 마지막 단이 떨어져 나갔을 때 로켓이 있던 높이를 소수점 아래 정확히 두 자리로 반올림하여 출력합니다.