Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 두 프레스 사이에서 사람이 살아남는 시간 계산하기

이 문제에서는 네 개의 숫자 d, L, v1, v2가 주어집니다. 두 개의 프레스(press)가 각각 위치 0과 위치 L에 있으며, 서로를 향해 속도 v1과 v2로 다가갑니다. 사람의 몸 너비는 d이며, 두 프레스 사이의 간격이 d보다 좁아지면 사람은 압사하게 됩니다. 우리가 구해야 할 것은 이 사람이 살아남을 수 있는 시간입니다.

예를 들어 입력이 d = 1, L = 9, v1 = 1, v2 = 2라고 가정해 봅시다. 그렇다면 출력 결과는 2.6667이 됩니다.

문제 풀이 접근 방식

이 문제를 해결하기 위해 다음 단계를 따릅니다.

두 프레스가 서로 다가오면서 사람의 몸 너비만큼의 간격(d)까지 줄어드는 데 걸리는 시간을 구하면 됩니다. 즉, 초기 거리 L에서 안전 거리 d를 뺀 값(L − d)을 두 프레스의 상대 속도(v1 + v2)로 나누면 됩니다.

e := (L - d)/(v1 + v2)
return e

예제 코드

아래 C++ 구현 예제를 통해 더 자세히 이해해 보겠습니다.

#include <bits/stdc++.h>
using namespace std;
float solve(int d, int L, int v1, int v2){
   float e = (L - d) / (float)(v1 + v2);
   return e;
}
int main(){
   int d = 1;
   int L = 9;
   int v1 = 1;
   int v2 = 2;
   cout << solve(d, L, v1, v2) << endl;
}

입력

1, 9, 1, 2

출력

2.66667

코드 설명

solve 함수는 안전 거리를 확보한 후 남은 거리(L − d)를 두 프레스의 합산 속도(v1 + v2)로 나누어 생존 시간을 계산합니다. 정수 나눗셈 오류를 방지하기 위해 분모를 float형으로 형 변환한 점에 유의하세요. 위 예제에서는 남은 거리가 8이고 상대 속도가 3이므로, 8 ÷ 3 ≈ 2.66667이라는 결과가 출력됩니다.