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

C++로 계산하는 세 번째 주사위에서 더 높은 값이 나올 확률

세 명의 플레이어 A, B, C가 주사위를 던진다고 가정해 봅시다. 이때 C가 주사위를 던져 나온 숫자가 A와 B의 숫자보다 모두 클 확률을 구하는 것이 목표입니다.

더 높은 값이 나올 확률을 확인하려면, 세 번째 주사위의 값이 앞의 두 값보다 커야 한다는 점을 항상 염두에 두어야 합니다.

예를 들어 A가 주사위를 던져 2가 나오고, B가 던져 3이 나왔다면, C가 더 높은 값을 얻을 확률은 3/6 = 1/2입니다. 왜냐하면 A와 B보다 큰 값은 4, 5, 6뿐이기 때문입니다. 이를 기약분수로 약분하면 확률은 1/2가 됩니다.

따라서 최종 결과는 반드시 기약분수 형태로 약분하여 출력해야 합니다.

입력 예시

A = 3, B = 5

출력

1/6

설명

3과 5보다 동시에 큰 값은 6뿐이므로, 확률은 1/6입니다.

입력 예시

A = 2, B = 4

출력

1/3

설명

2와 4보다 모두 큰 값은 5와 6으로, 확률은 2/6입니다. 이를 약분하면 1/3이 됩니다.

문제 해결 접근 방법

  • A와 B 중에서 최댓값을 찾습니다.
  • 6에서 A와 B의 최댓값을 뺀 후, 그 값과 6의 최대공약수(GCD)를 계산합니다.
  • 계산된 결과를 반환합니다.

알고리즘

Start
Step 1→ 세 번째 주사위에서 더 높은 값이 나올 확률 계산
    void probab_third(int a, int b)
       declare int c = 6 - max(a, b)
       declare int GCD = __gcd(c, 6)
       Print GCD
Step 2→ In main()
    Declare int a = 2, b = 2
    Call probab_third(a, b)
Stop

구현 예제 코드

#include <bits/stdc++.h>
using namespace std;
// 세 번째 주사위에서 더 높은 값이 나올 확률
void probab_third(int a, int b){
   int c = 6 - max(a, b);
   int GCD = __gcd(c, 6);
   cout<<"probability of getting more value in third dice : " <<c / GCD << "/" << 6 / GCD;
}
int main(){
   int a = 2, b = 2;
   probab_third(a, b);
   return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

probability of getting more value in third dice : 2/3