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