C++ - 백준 9469 폰 노이만

2025. 1. 30. 18:05C_C++

728x90
반응형
/* 백준 9469 폰 노이만

* 문제

250마일 길이의 철로 양 끝에 두 기차 A와 B가 있다. A는 시속 10마일, B는 시속 15마일로
서로를 향해 출발했다. 두 기차의 출발과 동시에 기차 A 앞에 붙어있던 파리 한 마리가 기차가
충돌할 때 까지 시속 20마일로 두 기차를 사이를 왔다갔다 한다. 이때, 파리가 이동한 거리는
몇 마일일까?

폰 노이만은 문제를 듣자마자 머리속으로 무한 급수를 이용해 계산한 다음 1초도 지나지 않은
시간에 200 마일이라고 대답했다.

철로의 길이 D, 두 기차 A, B의 속도와 파리의 속도 F가 주어졌을 때, 위 문제의 답을 구하는
프로그램을 작성하시오.

* 입력

첫째 줄에 테스트 케이스의 개수 P (1 ≤ P ≤ 1000)가 주어진다.
각 테스트 케이스는 다섯 숫자 N, D, A, B, F이루어져 있다. N은 테스트 케이스의 번호이고,
D는 철로의 길이 (10 ≤ D ≤ 1000), A와 B는 두 기차의 속도 (1 ≤ A, B ≤ 40),
F는 파리의 속도 (A ≤ B < F ≤ 50)이다. D, A, B, F는 실수이다. 실수는 최대 소수점
둘째자리까지 주어진다.

* 출력

각 테스트 케이스마다 테스트 케이스 번호를 출력하고, 두 기차가 충돌할 때까지 파리가 움직인
거리를 출력한다. 절대 오차는 10-2까지 허용한다.

* 예제 입력 1

5
1 250 10 15 20
2 10.7 3.5 4.7 5.5
3 523.7 15.3 20.7 33.3
4 1000 30 30 50
5 500 15 15 25

* 예제 출력 1

1 200.000000
2 7.176829
3 484.422500
4 833.333333
5 416.666667

*/

/* 풀이

이 문제는 실제로 무한 급수를 사용하지 않아도 해결할 수 있습니다. 기차가 충돌하기까지의 
시간을 구하고, 파리가 그 시간 동안 이동한 거리를 계산하면 됩니다.

1. 기차가 충돌할 때까지의 시간 계산:

    기차 A의 속도: 10 마일/시간
    기차 B의 속도: 15 마일/시간
    철로의 길이: 250 마일

    두 기차는 서로를 향해 달리기 때문에 두 기차의 속도를 더한 속도로 접근합니다:

    합속도: 10 + 15 = 25 마일/시간

    두 기차가 충돌할 때까지 걸리는 시간은 철로의 길이를 합속도로 나눈 값입니다:
    (속도 = 거리 / 시간   ==>   시간 = 거리 / 속도)

    시간 = 250 마일 / 25 마일/시간 = 10 시간

2. 파리가 이동한 거리 계산:
   파리는 어차피 파리의 속도로 계속 이동하기 때문에 충돌할 때까지의 시간만큼 얼마나
   이동했는지만 계산하면 됩니다.

    파리의 속도: 20 마일/시간
    두 기차가 충돌할 때까지의 시간: 10 시간

V 따라서 파리가 이동한 거리는 파리의 속도와 시간을 곱하면 됩니다:
    (거리 = 속도 × 시간)

    거리 = 20 마일/시간 × 10 시간 = 200 마일

*/

#include <iostream>
#include <iomanip>

using std::cin, std::cout;

int main() {
	int t;
    cin >> t;

    while (t-- > 0) {
		int n;
		double d, a, b, f;
        cin >> n >> d >> a >> b >> f;

        double time = d / (a + b);
        double distance = time * f;
        cout << std::fixed << std::setprecision(6);
        cout << n << ' ' << distance << '\n';

	}
}
728x90
반응형

'C_C++' 카테고리의 다른 글

C++ - 백준 11320 삼각 무늬 - 1  (0) 2025.01.31
C++ - 백준 9501 꿍의 우주여행  (0) 2025.01.30
C++ - 백준 5691 평균 중앙값 문제  (0) 2025.01.30
C++ - 백준 3035 스캐너  (0) 2025.01.30
C++ - 백준 3004 체스판 조각  (0) 2025.01.30