Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

부러진 막대기 조각이 C++에서 n면 다각형을 형성할 확률


어떤 길이의 막대기가 주어지며 그 막대기는 정수 또는 부동 소수점 유형이 될 수 있는 n개의 조각으로 무작위로 쪼개질 수 있으며 부서진 조각이 가능한지 여부를 찾는 것이 작업입니다. n면 다각형을 형성합니다.

공식을 적용하여 확률을 계산할 수 있습니다.

$$P(E^{\prime})=1-P(E)=1-\frac{n}{2^{n-1}}$$

여기서, n은 막대기를 여러 부분으로 분해하여 생성된 조각의 수입니다.

입력

length = 10 , pieces = 4

출력

probability is : 0.5

설명 - 길이 10cm로 주어지며 4부분으로 나뉩니다.

입력

length = 5 , pieces = 3

출력

probability is : 0.25

설명 - 길이가 5cm이고 3등분되어 있습니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 쪼개질 수 있는 조각의 수와 함께 막대기의 길이를 입력하십시오.

  • 공식을 적용하여 확률 계산

  • 결과 인쇄

알고리즘

Start
Step 1→ Declare function to calculate the probability
   double probab(unsigned len, unsigned pieces)
      declare unsigned a = (1 << (pieces-1))
      return 1.0 - ((double)pieces) / ((double)a)
step 2→ In main()
   Declare unsigned pieces = 4, len = 10
   Call probab(len, pieces)
Stop

예시

#include<iostream>
using namespace std;
//function to calculate probability
double probab(unsigned len, unsigned pieces){
   unsigned a = (1 < (pieces-1));
   return 1.0 - ((double)pieces) / ((double)a);
}
int main(){
   unsigned pieces = 4, len = 10;
   cout <<"probability is : "<<probab(len, pieces);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

probability is : 0.5