Məsələni həll etmək üçün tam ehtimal düsturundan istifadə edəcəyik. İşarə edək:
— inəkli qapıların sayı;
— avtomobilli qapıların sayı;
doors = cows + cars — qapıların ümumi sayı;
— aparıcının açdığı inəkli qapıların sayı.
Əvvəlcə inəkli qapını seçmə ehtimalı cows / doors-a, avtomobilli qapını seçmə ehtimalı isə cars / doors-a bərabərdir.
Oyunçu ilkin seçimini etdikdən sonra aparıcı sayda inəkli qapını açır. Sonra oyunçu öz seçimini dəyişir və qalan bağlı qapılardan birini seçir.
sayda qapı açıldıqdan və ilkin seçilmiş qapı istisna edildikdən sonra doors - shown - 1 sayda bağlı qapı qalır. İki hal nəzərdən keçirək.
1. Oyunçu ilkin olaraq inək seçib.
Bu hadisənin ehtimalı cows / doors-a bərabərdir.
Aparıcının açdığı bütün qapılarda inək olduğundan, qalan bağlı qapılar arasında bütün avtomobil yerləşir. Buna görə seçimi dəyişdikdən sonra avtomobil seçmə ehtimalı
bərabərdir. Deməli, bu halın yekun ehtimala verdiyi töhfə ilkin olaraq inək seçmə ehtimalı ilə sonra avtomobil seçmə ehtimalının hasilinə bərabərdir.
2. Oyunçu ilkin olaraq avtomobil seçib.
Bu hadisənin ehtimalı cars / doors-a bərabərdir.
sayda inəkli qapı açıldıqdan sonra, qalan bağlı qapılar arasında cars - 1 avtomobil yerləşir, çünki bir avtomobil artıq ilkin seçilmiş qapının arxasındadır. Buna görə seçimi dəyişdikdən sonra avtomobil seçmə ehtimalı
bərabərdir. Deməli, bu halın yekun ehtimala verdiyi töhfə ilkin olaraq avtomobil seçmə ehtimalı ilə seçimi dəyişdikdən sonra yenidən avtomobil seçmə ehtimalının hasilinə bərabərdir.
Beləliklə, avtomobil qazanmağın yekun ehtimalı bu iki haldakı qazanma ehtimallarının cəmi kimi hesablanır:
Nümunə
Birinci test nümunəsinə baxaq. Oyunda üç qapı var.
Əgər oyunçu əvvəlcə mükafatlı qapını seçərsə, bu seçimin ehtimalı təşkil edir. Seçimi dəyişdikdən sonra o mütləq uduzacaq, çünki qalan bağlı qapı inəyə aparır.
Əgər isə oyunçu əvvəlcə inəkli qapını seçərsə, bu seçimin ehtimalı təşkil edir. Aparıcı digər inəkli qapını açır və seçimi dəyişdikdən sonra oyunçu mütləq mükafatlı qapını seçib qazanır.
Beləliklə, qazanmağın yekun ehtimalı
bərabərdir.
Alqoritmin realizasiyası
Giriş məlumatlarını oxuyuruq.
while(scanf("%d %d %d",&cows,&cars,&shown) == 3)
{qapı sayını hesablayırıq.
doors = cows + cars;Düstur üzrə cavabı hesablayır və onu çap edirik.
res = 1.0*((cars - 1)*cars + cars*cows)/(doors*(doors – shown - 1));
printf("%.5lf\n",res);
}