Mucche e automobili#1573

Mucche e automobili (Editoriale)

Per risolvere il problema utilizzeremo la formula della probabilità totale. Indichiamo:

Inizialmente la probabilità di scegliere una porta con una mucca è pari a cows / doors, mentre la probabilità di scegliere una porta con un'automobile è pari a cars / doors.

Dopo che il giocatore ha effettuato la scelta iniziale, il conduttore apre porte con le mucche. Successivamente il giocatore cambia la propria scelta e seleziona una delle restanti porte chiuse.

Dopo l'apertura di porte e l'esclusione della porta scelta inizialmente, rimangono doors - shown - 1 porte chiuse. Consideriamo due casi.

1. Inizialmente il giocatore ha scelto una mucca.

La probabilità di questo evento è pari a cows / doors.

Poiché tutte le porte aperte dal conduttore contengono mucche, tra le restanti porte chiuse si trovano tutte le automobili. Pertanto la probabilità di scegliere un'automobile dopo il cambio di scelta è pari a

cars / (doors - shown - 1)

Di conseguenza, il contributo di questo caso alla probabilità finale è pari al prodotto della probabilità di scegliere inizialmente una mucca e della probabilità di scegliere successivamente un'automobile.

2. Inizialmente il giocatore ha scelto un'automobile.

La probabilità di questo evento è pari a cars / doors.

Dopo l'apertura di porte con le mucche, tra le restanti porte chiuse si trovano cars - 1 automobili, poiché un'automobile si trova già dietro la porta scelta inizialmente. Pertanto la probabilità di scegliere un'automobile dopo il cambio di scelta è pari a

(cars - 1) / (doors - shown - 1)

Di conseguenza, il contributo di questo caso alla probabilità finale è pari al prodotto della probabilità di scegliere inizialmente un'automobile e della probabilità di scegliere nuovamente un'automobile dopo il cambio di scelta.

In questo modo, la probabilità risultante di vincere l'automobile si calcola come somma delle probabilità di vincita in questi due casi:

\frac{cows}{doors} \cdot \frac{cars}{doors-shown-1} + \frac{cars}{doors} \cdot \frac{cars-1}{doors-shown-1} = \\ = \frac{cows \cdot cars + cars \cdot (cars - 1)}{doors \cdot (doors - shown - 1)}

Esempio

Consideriamo il primo caso di test. Nel gioco sono presenti tre porte.

Se inizialmente il giocatore sceglie la porta con il premio, la probabilità di tale scelta è pari a . Dopo il cambio di scelta perderà sicuramente, poiché la restante porta chiusa conduce a una mucca.

Se invece inizialmente il giocatore sceglie una porta con una mucca, la probabilità di tale scelta è pari a . Il conduttore apre l'altra porta con la mucca, e dopo il cambio di scelta il giocatore sceglie sicuramente la porta con il premio e vince.

In questo modo, la probabilità finale di vincita è pari a

1/3 \cdot 0 + 2/3 \cdot 1 = 2/3

Implementazione dell'algoritmo

Leggiamo i dati di input.

while(scanf("%d %d %d",&cows,&cars,&shown) == 3)
{

Calcoliamo il numero di porte .

  doors = cows + cars;

Calcoliamo la risposta secondo la formula e la stampiamo.

  res = 1.0*((cars - 1)*cars + cars*cows)/(doors*(doors – shown - 1));
  printf("%.5lf\n",res);
}