PS

BOJ 30878 : 약속 시간

lickelon 2024. 3. 18. 23:33
  • 문제 링크 : boj.kr/30878
  • 난이도 : G1
  • 태그 : 수학, 확률론
 

30878번: 약속 시간

철민이는 ALOHA 최대의 행사 HCPC의 출제와 검수를 위해 $11$시 정각에 하이와 바이를 만나기로 하였다. 그런데 철민이와 하이, 바이는 약속 시간을 정확히 지키지 않아서 상대방을 기다리게 하고는

www.acmicpc.net


코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

ll gcd(ll a, ll b)
{
    if (!b) return a;
    return gcd(b, a % b);
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int m;
    cin >> m;
    int ans = m*m*(m + 3*(60-m));
    int b = 60 * 60 * 60;

    cout << ans / gcd(ans, b) << "/" << b / gcd(ans, b);

    return 0;
}

풀이

조건을 수식으로 풀어보면 다음과 같다.

  • $0 \le x, y, z \le 60$
  • $|x-y| \le M, |y-z| \le M, |z-x| \le M$

이 수식을 만족하는 도형의 부피가 세 사람이 만날 확률이다.

 

이 모양을 바로 상상하긴 어려우니 2차원에 투영해보자. 비교적 그림을 쉽게 그릴 수 있다.

이는 한 변의 길이가 M이고 한 꼭짓점이 $(t, t)$, 그 반대쪽 꼭짓점이$(t+M, t+M)$인 정사각형이 있고, $(0 \le t \le 60-M)$일때, 정사각형의 자취와 같다.

마찬가지의 방법으로 3차원에 확장해보면 한 변의 길이가 M이고 한 꼭짓점이 $(t, t, t)$, 그 반대쪽 꼭짓점이$(t+M, t+M, t+M)$인 정육면체가 있고, $(0 \le t \le 60-M)$일때, 정육면체의 자취와 같다.

 

다만 이 자취의 부피를 바로 계산하기에는 어려움이 있다. 쉽게 계산하기 위해, 정육면체 중 $x=t, y=t, z=t$인 세 정사각형의 자취를 먼저 이용해 구할 것이다. 하나의 정사각형만 가지고 상상력을 발휘해보자. 이 정사각형이 그리는 자취가 밑변은 한 변의 길이가 $M$이고, $x=y=z$인 직선을 빗변으로 타고 올라가는 도형임을 알 수 있고, 이 도형의 부피는$ M*M*(60-M)$임을 알 수 있다. 정사각형이 세 개이므로 앞에서 구한 부피에 세 배를 해주고, 처음에 제외했던 정육면체의 부피를 더해주면 앞의 수식을 만족하는 도형의 부피를 구할 수 있다.

 

이제 만날 확률의 부피를 구했으므로, 전체 공간의 부피로 나눠준 다음 각각을 최대공약수로 나누어 주면 된다.

'PS' 카테고리의 다른 글

BOJ 30961 : 최솟값, 최댓값  (0) 2024.03.20
BOJ 11108 : TV 전쟁  (0) 2024.03.19
BOJ 24337 : 가희와 탑  (0) 2024.03.17
BOJ 31410 : 제독 작전  (0) 2024.03.16
BOJ 17432 : 정렬  (0) 2024.03.15