마지막 단이 분리된 높이
시간 제한1초메모리 제한256 MB
주어진 추력, 질량, 연소 시간으로 n단 로켓의 상승을 단계별로 계산해 마지막 단 분리 순간의 높이를 출력합니다.
문제
2006년 가을 USC 공과대학은 공학 100주년을 기념했고, 그때 열린 대회의 이름이 100 Years of Engineering이었다. 이 문제는 그 대회의 항공우주공학과 기계공학 문제다. 로켓을 만들어 쏘아 올렸다면, 다시 떨어지기 전에 얼마나 높이 올라가는지 알고 싶어진다.
로켓은 개의 단으로 이루어져 있고, 각 단은 연료 탱크다. 단 는 초 동안 연소하면서 추력 를 내고, 연료가 떨어지는 순간 분리되어 버려진다. 마지막 단까지 버리고 나면 로켓은 더 이상 가속하지 못한다.
로켓 본체의 질량은 킬로그램이다. 즉 모든 단을 버리고 남는 질량이 이다. 단 의 질량은 이고, 연료 자체의 질량은 0으로 본다. 그래서 처음 로켓의 질량은 이고, 단 가 연소하는 동안의 질량은 이다. 이미 분리한 단은 무게에서 빠진다.
로켓은 똑바로 위로 발사되고, 처음 속도는 0m/s다. 바람, 마찰, 지구 중력장 이탈 같은 효과는 모두 무시한다.
필요한 물리 공식은 세 가지다.
- 질량이 인 물체에 힘 가 작용하면 가속도는 이다.
- 지구 중력장 안에서 모든 물체는 지구 쪽으로 의 일정한 가속도를 받는다.
- 속도 로 움직이는 물체가 가속도 로 초 동안 움직이면 이동 거리는 이고, 초 뒤의 속도는 이다.
따라서 단 가 연소하는 동안 로켓의 위쪽 방향 가속도는 로 일정하다. 여기서 은 그 연소 구간에서의 로켓 질량이다. 이 값이 음수이면 로켓은 감속하거나 아래로 내려온다.
단은 순서로 쓰고 버린다. 마지막 단이 떨어져 나가는 순간 로켓이 있던 높이를 구한다. 입력은 항상 로켓이 이륙하고, 마지막 단을 버리기 전에는 지면에 부딪히지 않도록 주어진다.
입력
첫 줄에 데이터 세트의 개수 이 주어진다. 이어서 개의 데이터 세트가 다음 형식으로 주어진다.
각 데이터 세트의 첫 줄에는 단의 개수 과 로켓 본체의 질량 이 주어진다. 은 인 정수이고, 은 인 실수다.
다음 개의 줄에는 각각 세 실수 , , 가 주어지며, 셋 다 이상 이하다. 는 단 의 질량(kg), 는 연소 시간(초), 는 그동안 내는 추력이고 단위는 이다.
출력
각 데이터 세트마다 먼저 Data Set x:를 한 줄에 출력한다. 는 데이터 세트의 번호로 1부터 센다. 다음 줄에 마지막 단이 떨어져 나갔을 때 로켓의 높이를 소수점 아래 둘째 자리까지 반올림해서 출력한다.
각 데이터 세트 뒤에는 빈 줄을 하나 출력한다.