Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xác suất thắng cuộc của A khi biết xác suất sút phạt trong C++


Cho hai người chơi A và B sút luân lưu để thắng. Xác suất A sút trúng trước là a/b, B sút trúng trước là c/d. Người sút trúng trước thắng. Tìm xác suất A thắng.

Đầu vào 1

a = 10, b = 20, c = 30, d = 40

Đầu ra 1

xác suất = 0.5333

Đầu vào 2

a = 1, b = 2, c = 10, d = 11

Đầu ra 2

xác suất = 0.523

Phương pháp tiếp cận

  • Nhập a, b, c, d
  • Xác suất A thắng = e * (1 / (1 - (1-f)*(1-f))) với e = a/b, f = c/d
  • Hiển thị kết quả

Thuật toán

double xacSuatThang(int a, int b, int c, int d) {
    double e = (double)a / b;
    double f = (double)c / d;
    return e * (1 / (1 - (1 - f) * (1 - f)));
}

Ví dụ mã nguồn

#include <bits/stdc++.h>
using namespace std;

double xacSuatThang(int a, int b, int c, int d) {
    double e = (double)a / b;
    double f = (double)c / d;
    return e * (1 / (1 - (1 - f) * (1 - f)));
}

int main() {
    int a = 10, b = 20, c = 30, d = 40;
    cout << "xác suất là " << xacSuatThang(a, b, c, d);
    return 0;
}

Kết quả chạy chương trình

xác suất là 0.5333